Spring Boot এ Spring OXM ইন্টিগ্রেশন একটি সহজ এবং কার্যকর উপায়ে করা যায়। Spring Boot-এর অটো-কনফিগারেশন সুবিধা Spring OXM-এর সাথে XML ডেটা প্রসেসিং সহজ করে তোলে। Spring OXM সাধারণত JAXB (Java Architecture for XML Binding) বা অন্যান্য ম্যাপিং ফ্রেমওয়ার্ক ব্যবহার করে জাভা অবজেক্ট এবং XML ডেটার মধ্যে রূপান্তর করে।
Spring Boot এ Spring OXM ইন্টিগ্রেশন করার ধাপসমূহ
১. Maven নির্ভরতাগুলি যোগ করা
Spring Boot প্রকল্পে প্রয়োজনীয় ডিপেন্ডেন্সি যুক্ত করতে হবে।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
২. মডেল ক্লাস তৈরি (JAXB এনোটেশন সহ)
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "employee")
public class Employee {
private String name;
private int age;
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
৩. Spring OXM কনফিগারেশন যোগ করা
Spring Boot এ একটি @Configuration ক্লাসে Spring OXM-এর জন্য JAXB সেটআপ করা যায়।
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();
marshaller.setClassesToBeBound(Employee.class); // JAXB ব্যবহারকারী ক্লাস
return marshaller;
}
}
৪. সার্ভিস ক্লাস তৈরি করা
Spring OXM ব্যবহার করে XML ডেটা প্রসেসিং করার জন্য একটি সার্ভিস ক্লাস তৈরি করা যেতে পারে।
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.stereotype.Service;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.*;
@Service
public class XmlProcessingService {
private final Jaxb2Marshaller marshaller;
public XmlProcessingService(Jaxb2Marshaller marshaller) {
this.marshaller = marshaller;
}
// জাভা অবজেক্ট থেকে XML তৈরি
public void marshall(Employee employee, OutputStream outputStream) throws IOException {
marshaller.marshal(employee, new StreamResult(outputStream));
}
// XML থেকে জাভা অবজেক্ট তৈরি
public Employee unmarshall(InputStream inputStream) {
return (Employee) marshaller.unmarshal(new StreamSource(inputStream));
}
}
৫. REST API কন্ট্রোলার তৈরি করা
Spring Boot এর মাধ্যমে XML ডেটা প্রসেস করার জন্য একটি REST API কন্ট্রোলার তৈরি করা।
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
private final XmlProcessingService xmlProcessingService;
public EmployeeController(XmlProcessingService xmlProcessingService) {
this.xmlProcessingService = xmlProcessingService;
}
@PostMapping(consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
public String processXml(@RequestBody String xmlInput) throws Exception {
// XML থেকে জাভা অবজেক্ট
ByteArrayInputStream inputStream = new ByteArrayInputStream(xmlInput.getBytes());
Employee employee = xmlProcessingService.unmarshall(inputStream);
// প্রোসেস করা (উদাহরণস্বরূপ নাম বড় হাতের অক্ষরে রূপান্তর)
employee.setName(employee.getName().toUpperCase());
// জাভা অবজেক্ট থেকে XML
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
xmlProcessingService.marshall(employee, outputStream);
return outputStream.toString();
}
}
৬. API পরীক্ষা করা
XML ডেটা পাঠানো:
POST /api/employees
Content-Type: application/xml
Accept: application/xml
<employee>
<name>Jane Smith</name>
<age>25</age>
</employee>
রেসপন্স (প্রক্রিয়াকৃত XML):
<employee>
<name>JANE SMITH</name>
<age>25</age>
</employee>
Spring Boot এর সুবিধা:
- অটো-কনফিগারেশন: Spring Boot অনেক কনফিগারেশন স্বয়ংক্রিয়ভাবে হ্যান্ডেল করে।
- REST API ইন্টিগ্রেশন সহজ: JSON এবং XML উভয় ফরম্যাটে ডেটা প্রসেস করা যায়।
- কাস্টমাইজেশন সুবিধা: প্রয়োজন অনুযায়ী JAXB বা অন্য XML ফ্রেমওয়ার্ক ব্যবহার করা যায়।
আপনার যদি আরও নির্দিষ্ট কোনও ফিচার যেমন কাস্টম ভ্যালিডেশন বা কাস্টম কনভার্টার নিয়ে সাহায্য প্রয়োজন হয়, আমাকে জানান!