Spring OXM (Object/XML Mapping) একটি সুবিধাজনক মডিউল যা ডেভেলপারদের জন্য একাধিক XML ম্যাপিং ফ্রেমওয়ার্কের সাথে কাজ করা সহজ করে তোলে। Spring OXM-এর মাধ্যমে JAXB, XStream, এবং Castor-এর সাথে সহজেই ইন্টিগ্রেশন করা যায়। নিচে প্রতিটি ফ্রেমওয়ার্কের নতুন ফিচার এবং Spring OXM-এর ইন্টিগ্রেশন দেখানো হয়েছে:
১. JAXB (Java Architecture for XML Binding)
JAXB-এর নতুন বৈশিষ্ট্য:
- Java 9+ মডিউল সাপোর্ট: JAXB এখন মডিউলার জাভার জন্য সাপোর্ট প্রদান করে।
- Customization:
jaxb.propertiesফাইল ব্যবহার করে কাস্টমাইজেশন সহজ হয়েছে। - Annotations:
@XmlElementWrapper,@XmlIDREF, এবং অন্যান্য অ্যানোটেশন উন্নত হয়েছে।
Spring OXM এবং JAXB ইন্টিগ্রেশন:
Dependency:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
Spring Configuration:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@Configuration
public class JAXBConfig {
@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan("com.example.models");
return marshaller;
}
}
ব্যবহার উদাহরণ:
@Service
public class JAXBService {
@Autowired
private Jaxb2Marshaller marshaller;
public String convertObjectToXML(Object object) {
StringWriter writer = new StringWriter();
marshaller.marshal(object, new StreamResult(writer));
return writer.toString();
}
public Object convertXMLToObject(String xml) {
StringReader reader = new StringReader(xml);
return marshaller.unmarshal(new StreamSource(reader));
}
}
২. XStream
XStream-এর নতুন বৈশিষ্ট্য:
- Security Enhancements: XStream এখন Whitelisting মডেল ব্যবহার করে ডিফল্টভাবে ক্লাস সিকিউরিটি নিশ্চিত করে।
- Annotations: XML কাস্টমাইজেশনের জন্য আরও শক্তিশালী অ্যানোটেশন সাপোর্ট।
- Compatibility: নতুন Java সংস্করণের সাথে সামঞ্জস্যপূর্ণ।
Spring OXM এবং XStream ইন্টিগ্রেশন:
Dependency:
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
</dependency>
Spring Configuration:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.xstream.XStreamMarshaller;
@Configuration
public class XStreamConfig {
@Bean
public XStreamMarshaller xStreamMarshaller() {
XStreamMarshaller marshaller = new XStreamMarshaller();
marshaller.setAnnotatedClasses(Student.class);
return marshaller;
}
}
ব্যবহার উদাহরণ:
@Service
public class XStreamService {
@Autowired
private XStreamMarshaller marshaller;
public String convertObjectToXML(Object object) {
StringWriter writer = new StringWriter();
marshaller.marshal(object, new StreamResult(writer));
return writer.toString();
}
public Object convertXMLToObject(String xml) {
StringReader reader = new StringReader(xml);
return marshaller.unmarshal(new StreamSource(reader));
}
}
৩. Castor
Castor-এর নতুন বৈশিষ্ট্য:
- XPath Support: XML ডেটা থেকে সরাসরি তথ্য এক্সট্রাকশনের জন্য XPath সাপোর্ট।
- Improved Performance: XML → Java Object ম্যাপিং দ্রুততর হয়েছে।
- Namespace Management: নতুন namespace পরিচালনা ফিচার।
Spring OXM এবং Castor ইন্টিগ্রেশন:
Dependency:
<dependency>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor-xml</artifactId>
<version>1.4.2</version>
</dependency>
Spring Configuration:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.castor.CastorMarshaller;
@Configuration
public class CastorConfig {
@Bean
public CastorMarshaller castorMarshaller() {
CastorMarshaller marshaller = new CastorMarshaller();
marshaller.setMappingLocation("classpath:castor-mapping.xml");
return marshaller;
}
}
Castor Mapping Example (castor-mapping.xml):
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<class name="com.example.models.Student">
<map-to xml="student"/>
<field name="id" type="string" xml="id"/>
<field name="name" type="string" xml="name"/>
<field name="department" type="string" xml="department"/>
</class>
</mapping>
ব্যবহার উদাহরণ:
@Service
public class CastorService {
@Autowired
private CastorMarshaller marshaller;
public String convertObjectToXML(Object object) {
StringWriter writer = new StringWriter();
marshaller.marshal(object, new StreamResult(writer));
return writer.toString();
}
public Object convertXMLToObject(String xml) {
StringReader reader = new StringReader(xml);
return marshaller.unmarshal(new StreamSource(reader));
}
}
Spring OXM-এর বৈশিষ্ট্য এবং উপকারিতা
- একীভূত ইন্টারফেস: JAXB, XStream, এবং Castor এর মতো বিভিন্ন ফ্রেমওয়ার্কের জন্য একটি সাধারণ API।
- Marshalling এবং Unmarshalling সহজ: XML এবং Java Object এর মধ্যে রূপান্তর দ্রুত এবং কার্যকর।
- ইন্টিগ্রেশন: Spring Context এর মাধ্যমে কনফিগারেশন এবং ব্যবহার অত্যন্ত সহজ।
- মাল্টি-ফ্রেমওয়ার্ক সাপোর্ট: একই প্রকল্পে বিভিন্ন XML ম্যাপিং ফ্রেমওয়ার্ক ব্যবহার করা যায়।
আপনার যদি আরও বিস্তারিত উদাহরণ বা নির্দিষ্ট কোনো কাস্টমাইজেশন প্রয়োজন হয়, দয়া করে জানাবেন। 😊
Content added By