Spring Boot প্রজেক্টে Spring OXM ব্যবহার করে JAXB বা XStream এর মাধ্যমে জাভা অবজেক্ট এবং XML ডাটার মধ্যে ম্যাপিং করা যায়। এটি RESTful সার্ভিস, কনফিগারেশন প্রসেসিং, এবং ডাটা স্টোরেজের জন্য XML ব্যবহারের ক্ষেত্রে খুব কার্যকর।
Spring Boot প্রজেক্টে JAXB ব্যবহার
1. Maven ডিপেনডেন্সি যোগ করা
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>5.x.x</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.x</version>
</dependency>
2. JAXB মডেল ক্লাস তৈরি
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class ExampleModel {
private String name;
private int id;
public ExampleModel() {}
public ExampleModel(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
3. Marshaller এবং Unmarshaller কনফিগার করা
Spring Boot এ আমরা Java Bean ব্যবহার করে Marshaller এবং Unmarshaller কনফিগার করতে পারি।
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 marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example.model");
return marshaller;
}
}
4. Spring Boot Controller তৈরি
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")
public class ExampleController {
@Autowired
private Jaxb2Marshaller marshaller;
@GetMapping(value = "/getXml", produces = "application/xml")
public String getXml() throws Exception {
ExampleModel model = new ExampleModel("Example Name", 123);
StringWriter writer = new StringWriter();
marshaller.marshal(model, new StreamResult(writer));
return writer.toString();
}
@PostMapping(value = "/postXml", consumes = "application/xml")
public String postXml(@RequestBody String xml) throws Exception {
StringReader reader = new StringReader(xml);
ExampleModel model = (ExampleModel) marshaller.unmarshal(new StreamSource(reader));
return "Received: " + model.getName() + ", ID: " + model.getId();
}
}
Spring Boot প্রজেক্টে XStream ব্যবহার
1. Maven ডিপেনডেন্সি যোগ করা
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>5.x.x</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.x</version>
</dependency>
2. XStream Configuraton তৈরি
import com.thoughtworks.xstream.XStream;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OXMConfig {
@Bean
public XStream xStream() {
XStream xStream = new XStream();
xStream.alias("example", ExampleModel.class);
return xStream;
}
}
3. Spring Boot Controller তৈরি
import com.thoughtworks.xstream.XStream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class ExampleController {
@Autowired
private XStream xStream;
@GetMapping(value = "/getXml", produces = "application/xml")
public String getXml() {
ExampleModel model = new ExampleModel("Example Name", 123);
return xStream.toXML(model);
}
@PostMapping(value = "/postXml", consumes = "application/xml")
public String postXml(@RequestBody String xml) {
ExampleModel model = (ExampleModel) xStream.fromXML(xml);
return "Received: " + model.getName() + ", ID: " + model.getId();
}
}
উপকারিতা
- JAXB:
- Standard API: এটি Java-র জন্য স্ট্যান্ডার্ড API।
- Type-safe Mapping: XML স্কিমার ওপর ভিত্তি করে টাইপ-সেফ ম্যাপিং।
- XStream:
- Simplicity: সহজে XML এবং অবজেক্টের মধ্যে কনভার্সন।
- Customization: Alias, Converter ইত্যাদির মাধ্যমে সহজ কাস্টমাইজেশন।
ব্যবহারের ক্ষেত্র
- RESTful API: XML ডাটা আদান-প্রদানে।
- SOAP Integration: SOAP সার্ভিস থেকে ডাটা প্রসেসিং।
- Configuration Files: XML ফরম্যাটে ডাটা স্টোরেজ বা সেটিংস।
Spring Boot-এ JAXB এবং XStream উভয়ই ব্যবহার করা সহজ এবং প্রয়োজন অনুযায়ী কাস্টমাইজ করা যায়।
Content added By