এই উদাহরণে, আমরা Spring Boot অ্যাপ্লিকেশনে Spring OXM ব্যবহার করে একটি REST API তৈরি করব, যেখানে আমরা XML ডেটার জন্য Marshalling (Java Object → XML) এবং Unmarshalling (XML → Java Object) করব।
১. Maven ডিপেন্ডেন্সি
প্রথমে আপনার pom.xml ফাইলে নিচের ডিপেন্ডেন্সি যোগ করুন:
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring OXM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<!-- JAXB API for XML Processing -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
২. JAXB মডেল তৈরি
Student ক্লাস:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "student")
public class Student {
private String id;
private String name;
private String department;
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
৩. Spring OXM কনফিগারেশন
OXMConfig ক্লাস:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@Configuration
public class OXMConfig {
@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
// JAXB-তে ম্যাপ করার জন্য মডেল ক্লাস সেট করুন
marshaller.setClassesToBeBound(Student.class);
return marshaller;
}
}
৪. REST কনট্রোলার
StudentController ক্লাস:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.web.bind.annotation.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;
import java.io.StringWriter;
@RestController
@RequestMapping("/api/students")
public class StudentController {
@Autowired
private Jaxb2Marshaller marshaller;
// POST: XML ডেটা গ্রহণ করে এবং প্রসেস করে
@PostMapping(consumes = "application/xml", produces = "application/xml")
public String handleStudentRequest(@RequestBody String xmlRequest) {
try {
// Unmarshalling: XML → Java Object
StringReader reader = new StringReader(xmlRequest);
Student student = (Student) marshaller.unmarshal(new StreamSource(reader));
// কিছু প্রসেসিং (উদাহরণ: নাম আপডেট)
student.setName(student.getName() + " (Updated)");
// Marshalling: Java Object → XML
StringWriter writer = new StringWriter();
marshaller.marshal(student, new StreamResult(writer));
return writer.toString();
} catch (Exception e) {
return "<error>Invalid XML format</error>";
}
}
}
৫. Spring Boot অ্যাপ্লিকেশন চালু করা
Main Application:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringOXMApplication {
public static void main(String[] args) {
SpringApplication.run(SpringOXMApplication.class, args);
}
}
৬. REST API টেস্ট করা
API Endpoint:
POST /api/students
Content-Type: application/xml
Accept: application/xml
অনুরোধের উদাহরণ:
<student>
<id>101</id>
<name>John Doe</name>
<department>Computer Science</department>
</student>
রেসপন্স:
<student>
<id>101</id>
<name>John Doe (Updated)</name>
<department>Computer Science</department>
</student>
কোডের ব্যাখ্যা
- Marshalling এবং Unmarshalling:
- Marshalling:
marshaller.marshal()ব্যবহার করে Java Object → XML রূপান্তর করা হয়। - Unmarshalling:
marshaller.unmarshal()ব্যবহার করে XML → Java Object রূপান্তর করা হয়।
- Marshalling:
- Spring OXM এবং JAXB Integration:
Jaxb2Marshallerব্যবহার করে সহজে JAXB-ভিত্তিক XML ম্যাপিং করা যায়।
- Spring Boot Integration:
- Spring Boot এর মাধ্যমে এটি সহজে REST API এর সাথে ইন্টিগ্রেট করা হয়েছে।
উপকারিতা
- সহজ ব্যবহার: Spring OXM XML ডেটার সাথে কাজ করা সহজ করে তোলে।
- বহুমুখীতা: JAXB ছাড়াও অন্যান্য XML ম্যাপিং লাইব্রেরির সাথে কাজ করার সুযোগ।
- Spring Boot এর সাথে seamless integration: কম কনফিগারেশনেই XML প্রসেসিং সাপোর্ট।
আপনার যদি এই উদাহরণে আরও কিছু কাস্টমাইজেশন বা বিশদ ব্যাখ্যা প্রয়োজন হয়, জানাবেন! 😊
Content added By
Read more