স্প্রিং ওএক্সএম (Spring OXM) এবং JSON ইন্টিগ্রেশন এমন একটি প্রক্রিয়া, যা XML এবং Java অবজেক্টের মধ্যে রূপান্তরের সাথে সাথে JSON ফরম্যাটের ডেটার সঙ্গে কাজ করতে সহায়তা করে। যদিও Spring OXM মূলত XML-এর জন্য তৈরি করা হয়েছে, তবে JSON ডেটার সাথে কাজ করার জন্য কিছু বিশেষ কনফিগারেশন এবং লাইব্রেরি ব্যবহার করা হয়, যেমন Jackson বা Gson।
Spring OXM এর মাধ্যমে JSON এবং Java অবজেক্টের মধ্যে রূপান্তর করার জন্য, সাধারণত Jackson2JsonMarshaller এবং Jackson2JsonUnmarshaller ব্যবহার করা হয়। Jackson হল একটি শক্তিশালী JSON প্রক্রিয়া লাইব্রেরি, যা Spring OXM এর সাথে সহজেই ইন্টিগ্রেট করা যায়।
Spring OXM এবং JSON ইন্টিগ্রেশন
Spring OXM এবং JSON এর ইন্টিগ্রেশন করার জন্য, JSON ডেটাকে Java অবজেক্টে এবং Java অবজেক্টকে JSON ডেটাতে রূপান্তর করতে Jackson লাইব্রেরি ব্যবহার করা হয়। Spring OXM Jackson এর সাহায্যে JSON ডেটার সাথে ইন্টিগ্রেশন করতে সক্ষম হয়।
১. Maven পম ফাইল কনফিগারেশন
প্রথমে, আপনার pom.xml ফাইলে Spring OXM এবং Jackson এর ডিপেনডেন্সি যোগ করতে হবে।
<dependencies>
<!-- Spring OXM Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>5.3.25</version>
</dependency>
<!-- Jackson Dependency for JSON processing -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version> <!-- Use the latest version -->
</dependency>
<!-- Spring Context Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.25</version>
</dependency>
</dependencies>
এখানে jackson-databind লাইব্রেরি JSON ডেটা প্রক্রিয়া করতে ব্যবহৃত হবে এবং Spring OXM Jackson2JsonMarshaller ও Jackson2JsonUnmarshaller ব্যবহার করবে।
২. Spring কনফিগারেশন ফাইল
Spring কনফিগারেশন ফাইলে Jackson এর জন্য একটি Marshaller এবং Unmarshaller Bean তৈরি করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- Jackson2Json Marshaller Bean -->
<bean id="marshaller" class="org.springframework.oxm.jackson.Jackson2JsonMarshaller">
<property name="objectMapper" ref="objectMapper" />
</bean>
<!-- Jackson2Json Unmarshaller Bean -->
<bean id="unmarshaller" class="org.springframework.oxm.jackson.Jackson2JsonUnmarshaller">
<property name="objectMapper" ref="objectMapper" />
</bean>
<!-- Jackson ObjectMapper Bean -->
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"/>
</beans>
এখানে:
Jackson2JsonMarshallerএবংJackson2JsonUnmarshallerSpring OXM এর অংশ যা JSON ডেটার সাথে কাজ করার জন্য ব্যবহৃত হয়।ObjectMapperহলো Jackson লাইব্রেরির একটি ক্লাস, যা JSON ডেটা প্রক্রিয়া এবং ম্যাপিংয়ের জন্য ব্যবহৃত হয়।
৩. Java কোড দিয়ে JSON থেকে Java Object এ ডেটা ম্যাপ করা
Spring OXM এবং Jackson ব্যবহার করে JSON থেকে Java অবজেক্টে রূপান্তর করার উদাহরণ নিচে দেওয়া হলো:
package com.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import com.example.model.Student;
import java.io.File;
import java.io.IOException;
public class SpringOxmWithJsonExample {
public static void main(String[] args) {
// Spring Context লোড করা
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Unmarshaller Bean অ্যাক্সেস করা
Unmarshaller unmarshaller = (Unmarshaller) context.getBean("unmarshaller");
try {
// JSON ফাইল থেকে Java অবজেক্টে রূপান্তর করা
File jsonFile = new File("student.json"); // JSON ফাইলের পাথ
Student student = (Student) unmarshaller.unmarshal(jsonFile);
// Java অবজেক্ট ব্যবহার করা
System.out.println("Student Name: " + student.getName());
System.out.println("Student Age: " + student.getAge());
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
Jackson2JsonUnmarshallerব্যবহার করা হচ্ছে JSON ফাইল থেকে Java অবজেক্টে রূপান্তর করতে।- JSON ফাইলটি থেকে ডেটা পড়া হচ্ছে এবং সেই ডেটা
Studentঅবজেক্টে রূপান্তরিত হচ্ছে।
৪. JSON ফাইল
এখানে একটি উদাহরণ JSON ফাইল দেওয়া হলো, যা Java অবজেক্টে রূপান্তরিত হবে:
{
"name": "John Doe",
"age": 25
}
এই JSON ফাইলটি Student ক্লাসের সাথে Jackson এবং Spring OXM এর মাধ্যমে ম্যাপিং করা হবে।
৫. Jackson এর বিশেষ সুবিধা
Jackson JSON প্রক্রিয়া করার জন্য খুবই শক্তিশালী এবং দ্রুত লাইব্রেরি, যা কিছু বিশেষ সুবিধা প্রদান করে:
- অটো-কনভার্সন: Jackson স্বয়ংক্রিয়ভাবে Java অবজেক্টকে JSON ফরম্যাটে এবং JSON ফরম্যাটকে Java অবজেক্টে রূপান্তর করতে সক্ষম।
- ফ্লেক্সিবল কনফিগারেশন: Jackson বিভিন্ন কাস্টমাইজেশন অপশন প্রদান করে, যেমন JSON ফাইলের নির্দিষ্ট ফিল্ডগুলো বাদ দেওয়া বা নতুন ফিল্ড যুক্ত করা।
- সহজ ইন্টিগ্রেশন: Spring OXM এর সাথে Jackson এর ইন্টিগ্রেশন খুবই সহজ এবং দ্রুত। JSON থেকে Java অবজেক্টে রূপান্তর অথবা Java অবজেক্ট থেকে JSON ফরম্যাটে রূপান্তর করা সহজ হয়ে যায়।
সারাংশ
Spring OXM এবং JSON ইন্টিগ্রেশন স্প্রিং অ্যাপ্লিকেশনের মধ্যে JSON ডেটার সাথে কাজ করার প্রক্রিয়াকে অনেক সহজ করে তোলে। Jackson2JsonMarshaller এবং Jackson2JsonUnmarshaller এর মাধ্যমে Spring OXM JSON ডেটা প্রক্রিয়াকরণে ব্যবহার করা যায়। Jackson লাইব্রেরির সাহায্যে JSON ফাইল থেকে Java অবজেক্টে রূপান্তর এবং Java অবজেক্ট থেকে JSON ফরম্যাটে রূপান্তর করার প্রক্রিয়া দ্রুত এবং কার্যকর হয়।
JSON কী?
JSON (JavaScript Object Notation) হল একটি হালকা, পাঠযোগ্য ডেটা বিনিময়ের ফরম্যাট যা JavaScript এর অবজেক্ট নোটেশন সিস্টেমের উপর ভিত্তি করে তৈরি। এটি মূলত কী-ভ্যালু পেয়ার ফরম্যাটে ডেটা স্টোর এবং ট্রান্সফার করতে ব্যবহৃত হয় এবং বিভিন্ন প্ল্যাটফর্মে ডেটা ইন্টারচেঞ্জের জন্য ব্যাপকভাবে ব্যবহৃত হয়।
JSON এর বৈশিষ্ট্য:
- পাঠযোগ্য: JSON ফরম্যাট খুবই সহজ এবং মানুষের পক্ষে পড়তে সহজ।
- কমপ্যাক্ট: XML এর তুলনায় JSON বেশি কমপ্যাক্ট এবং ছোট, যার ফলে ডেটার আকার কম হয়।
- লাইটওয়েট: JSON তে অতিরিক্ত ট্যাগ, অ্যাট্রিবিউট বা ব্র্যাকেট ব্যবহার করা হয় না, যা এর লাইটওয়েট প্রকৃতিকে শক্তিশালী করে।
- JavaScript এর সাথে ইন্টিগ্রেশন: JSON মূলত JavaScript Object Notation, তাই JavaScript সহ অন্যান্য প্রোগ্রামিং ভাষার সাথে এটি সহজে ব্যবহার করা যায়।
উদাহরণ: JSON ডেটা
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
}
এখানে name, age, এবং email হল কী (keys), এবং তাদের মান (values) প্রদান করা হয়েছে। এটি JSON ফরম্যাটে সহজে পার্স করা এবং অ্যাক্সেস করা যায়।
JSON এবং XML এর মধ্যে পার্থক্য
যদিও JSON এবং XML উভয়ই ডেটা ট্রান্সফারের জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে:
- ফরম্যাট: JSON এর ডেটা কনটেন্ট সাধারণত কৌণিক বন্ধনী
{}দিয়ে আবৃত থাকে, যেখানে XML এর ডেটা কনটেন্ট ট্যাগ দিয়ে পরিবেষ্টিত থাকে (<tag>value</tag>). - পাঠযোগ্যতা: JSON সাধারণত মানুষের পক্ষে আরও সহজে পড়া যায় কারণ এতে অতিরিক্ত ট্যাগ বা সিম্বল ব্যবহার করা হয় না।
- স্টোরেজ: JSON তে XML এর তুলনায় ডেটা ছোট এবং কমপ্যাক্ট থাকে।
- পার্সিং: JSON এর পার্সিং সাধারণত XML এর তুলনায় দ্রুত এবং কম সিস্টেম রিসোর্স খরচ করে।
XML এর সাথে JSON কেন ব্যবহার করা হয়?
স্প্রিং ওএক্সএম (Spring OXM) এর মতো ফ্রেমওয়ার্কে XML এবং JSON একসাথে ব্যবহৃত হওয়ার মূল কারণ হল এই যে, প্রতিটি ফরম্যাটের নিজের সুবিধা এবং ব্যবহারিক ক্ষেত্রে শক্তিশালী দিক রয়েছে। নিচে কিছু কারণ বর্ণনা করা হলো কেন JSON এবং XML একসাথে ব্যবহার করা হয়:
1. ডেটা ট্রান্সফার ও ইন্টিগ্রেশন:
- বিভিন্ন সিস্টেম বা অ্যাপ্লিকেশনের মধ্যে ডেটা ট্রান্সফার করতে XML এবং JSON একসাথে ব্যবহার করা হয় কারণ কিছু সিস্টেম XML সমর্থন করে, আবার কিছু সিস্টেম JSON সমর্থন করে। স্প্রিং OXM ফ্রেমওয়ার্কের মাধ্যমে XML এবং JSON ডেটা ট্রান্সফারের প্রক্রিয়া সহজতর হয়।
- JSON এবং XML উভয়ই ওয়েব সার্ভিসেস এবং API গুলির জন্য ব্যাপকভাবে ব্যবহৃত হয়। উদাহরণস্বরূপ, RESTful APIs সাধারণত JSON ডেটা পাঠায়, তবে SOAP APIs XML ব্যবহার করে।
2. প্ল্যাটফর্ম নিরপেক্ষতা:
- JSON এবং XML উভয়ই প্ল্যাটফর্ম নিরপেক্ষ ডেটা ফরম্যাট, অর্থাৎ তারা বিভিন্ন প্রোগ্রামিং ভাষা এবং সিস্টেমের মধ্যে ডেটা আদান-প্রদান করতে সক্ষম।
- XML সাধারণত বেশি প্রতিষ্ঠিত এবং পুরানো সিস্টেমগুলিতে ব্যবহৃত হয়, তবে JSON বর্তমানে আধুনিক ওয়েব অ্যাপ্লিকেশনগুলিতে বেশি ব্যবহৃত হচ্ছে।
3. বিভিন্ন ডেটা ফরম্যাটের মধ্যে রূপান্তর:
- Spring OXM (Object/XML Mapping) ফ্রেমওয়ার্ক XML থেকে JSON অথবা JSON থেকে XML রূপান্তর করতে সক্ষম। এটি স্প্রিং অ্যাপ্লিকেশনগুলিতে ডেটার একাধিক ফরম্যাটে বিনিময়কে সহজ করে তোলে।
- স্প্রিং ফ্রেমওয়ার্ক JSON এবং XML উভয় ফরম্যাটে ডেটা প্রসেসিংয়ের জন্য বিভিন্ন লাইব্রেরি যেমন
Jackson(JSON) এবংJAXB(XML) সমর্থন করে।
4. স্ট্রাকচার ও ডেটা মডেলিং:
- XML সাধারণত জটিল ডেটা স্ট্রাকচার যেমন নেস্টেড এলিমেন্ট এবং অ্যাট্রিবিউটস সমর্থন করে, যা JSON থেকে কিছুটা ভিন্ন হতে পারে। তবে JSON লাইটওয়েট ডেটা স্ট্রাকচার প্রদান করে যা ওয়েব অ্যাপ্লিকেশনের জন্য উপযুক্ত।
- Spring OXM এবং অন্যান্য টুলস JSON এবং XML উভয়ের সঠিক মডেলিং সমর্থন করে, যার মাধ্যমে ডেভেলপাররা তাদের প্রয়োজন অনুযায়ী যেকোনো একটির সাথে কাজ করতে পারে।
সারাংশ
JSON হল একটি হালকা, পাঠযোগ্য এবং কমপ্যাক্ট ডেটা বিনিময়ের ফরম্যাট যা সাধারণত ওয়েব অ্যাপ্লিকেশন এবং API ডেটা ট্রান্সফারের জন্য ব্যবহৃত হয়। XML, যদিও অনেক বেশি ভারী, এখনও অনেক সিস্টেমে ব্যবহৃত হয়। Spring OXM এর মাধ্যমে JSON এবং XML উভয় ফরম্যাটের মধ্যে ডেটা রূপান্তর করা সম্ভব, যা ডেটার বিভিন্ন ফরম্যাটের মধ্যে ইন্টিগ্রেশন ও ট্রান্সফারের জন্য সহায়ক। JSON এবং XML একসাথে ব্যবহৃত হয় বিভিন্ন প্রকার ডেটা সিস্টেমের মধ্যে সংযোগ স্থাপন এবং তাদের মধ্যে ডেটার আদান-প্রদান করতে।
Spring OXM সাধারণত XML ডেটা প্রসেস করার জন্য ব্যবহৃত হলেও, JAXB (Java Architecture for XML Binding) এর মাধ্যমে JSON ডেটা প্রসেস করার জন্যও এটি ব্যবহার করা যেতে পারে। JAXB মূলত XML ডেটা ম্যানিপুলেশনের জন্য ডিজাইন করা হলেও, JSON ডেটা প্রসেস করার জন্য কিছু কনফিগারেশন ও লাইব্রেরি ব্যবহার করতে হবে।
Spring OXM JAXB ব্যবহার করে JSON ডেটাকে Java অবজেক্টে রূপান্তর এবং Java অবজেক্টকে JSON ডেটায় রূপান্তর করতে সহায়তা করে। এই প্রক্রিয়ায়, Spring OXM এর JAXB মার্শালার এবং আনমার্শালার ব্যবহার করতে হবে, তবে JSON প্রসেসিংয়ের জন্য Jackson বা অন্য JSON লাইব্রেরি ব্যবহার করা হয়।
প্রয়োজনীয় ডিপেনডেন্সি
Spring OXM ব্যবহার করে JSON প্রসেস করতে Jackson লাইব্রেরি ব্যবহার করা হয়, যা JSON ডেটাকে Java অবজেক্টে রূপান্তর (deserialization) এবং Java অবজেক্টকে JSON ডেটাতে রূপান্তর (serialization) করতে সাহায্য করে।
1. Maven ডিপেনডেন্সি
<dependencies>
<!-- Spring OXM Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>5.3.0</version> <!-- আপনার প্রয়োজনীয় সংস্করণ -->
</dependency>
<!-- Jackson for JSON processing -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version> <!-- আপনার প্রয়োজনীয় সংস্করণ -->
</dependency>
<!-- JAXB API (যদি JAXB ব্যবহার করতে চান) -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
2. Gradle ডিপেনডেন্সি
dependencies {
// Spring OXM Dependency
implementation 'org.springframework:spring-oxm:5.3.0'
// Jackson for JSON processing
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.3'
// JAXB API (যদি JAXB ব্যবহার করতে চান)
implementation 'javax.xml.bind:jaxb-api:2.3.1'
}
JSON ডেটা প্রসেসিং উদাহরণ
ধরা যাক, আমাদের একটি Book ক্লাস রয়েছে, এবং আমরা একটি JSON ডেটা প্রসেস করতে চাই।
1. Java ক্লাস (Book.java)
package com.example;
public class Book {
private String title;
private String author;
private double price;
// Getter and Setter methods
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
2. JSON ডেটা (book.json)
{
"title": "Spring Framework Basics",
"author": "John Doe",
"price": 29.99
}
3. Spring OXM কনফিগারেশন (beans.xml)
Spring OXM কনফিগারেশনে JAXB মার্শালার এবং Jackson এর সহায়তায় JSON প্রসেসিং করতে নিচের কনফিগারেশন ব্যবহার করা যাবে:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<!-- Define the Jackson2JsonMarshaller bean for JSON processing -->
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.example.Book</value>
</list>
</property>
</bean>
<!-- Define the Jackson2JsonUnmarshaller bean -->
<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.example.Book</value>
</list>
</property>
</bean>
</beans>
Java কোড: JSON থেকে Object Mapping
এখন Spring OXM ব্যবহার করে JSON ডেটা প্রসেস করতে নিচের Java কোড ব্যবহার করতে হবে।
4. Java কোড (SpringOXMExample.java)
package com.example;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
public class SpringOXMExample {
public static void main(String[] args) throws Exception {
// Load Spring context from XML configuration
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// Get the unmarshaller bean
Jaxb2Marshaller unmarshaller = context.getBean("unmarshaller", Jaxb2Marshaller.class);
// Read the JSON file using Jackson ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
File jsonFile = new File("book.json");
// Convert JSON to Book object using Jackson
Book book = objectMapper.readValue(jsonFile, Book.class);
// Print the book details
System.out.println("Book Title: " + book.getTitle());
System.out.println("Book Author: " + book.getAuthor());
System.out.println("Book Price: " + book.getPrice());
context.close();
}
}
সারাংশ
এই উদাহরণে দেখানো হয়েছে কিভাবে Spring OXM এর মাধ্যমে JAXB এবং Jackson ব্যবহার করে JSON ডেটা প্রসেস করা যায়। এখানে Jackson লাইব্রেরি JSON ডেটাকে Java অবজেক্টে রূপান্তর করার জন্য ব্যবহার করা হয়েছে, এবং Spring OXM-এর JAXB মার্শালার ও আনমার্শালার ব্যবহার করে JSON ডেটা সহজেই Java অবজেক্টে মেপিং করা সম্ভব।
Spring OXM (Object XML Mapping) মূলত XML ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। কিন্তু যদি JSON এবং Object-এর মধ্যে Mapping করতে চান, তবে Spring Framework-এ Jackson, Gson, বা অন্য JSON প্রসেসর ব্যবহার করতে হবে। Spring OXM এটি সরাসরি সমর্থন করে না।
তবে Spring Context এবং Jackson Library ব্যবহার করে Object থেকে JSON এবং JSON থেকে Object Mapping করা যায়। এখানে উদাহরণ সহ প্রক্রিয়াটি ব্যাখ্যা করা হলো:
Dependency যুক্ত করা (Maven বা Gradle)
Maven:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
Gradle:
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.0'
Object থেকে JSON Mapping (Serialization)
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// Sample Object
User user = new User(1, "John Doe", "john.doe@example.com");
// ObjectMapper তৈরি
ObjectMapper objectMapper = new ObjectMapper();
// Object থেকে JSON-এ রূপান্তর
String jsonString = objectMapper.writeValueAsString(user);
System.out.println("JSON String: " + jsonString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
// Sample POJO Class
class User {
private int id;
private String name;
private String email;
// Constructors, Getters, and Setters
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public User() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Output:
JSON String: {"id":1,"name":"John Doe","email":"john.doe@example.com"}
JSON থেকে Object Mapping (Deserialization)
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
try {
// JSON String
String jsonString = "{\"id\":1,\"name\":\"John Doe\",\"email\":\"john.doe@example.com\"}";
// ObjectMapper তৈরি
ObjectMapper objectMapper = new ObjectMapper();
// JSON থেকে Object-এ রূপান্তর
User user = objectMapper.readValue(jsonString, User.class);
System.out.println("User Object: " + user.getName() + ", " + user.getEmail());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output:
User Object: John Doe, john.doe@example.com
Spring Boot ব্যবহার করলে
Spring Boot প্রজেক্টে এটি আরও সহজ। @RestController এবং @RequestBody ব্যবহার করে সহজেই Object এবং JSON-এর মধ্যে Mapping করা যায়।
Controller উদাহরণ:
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class UserController {
@PostMapping("/user")
public User createUser(@RequestBody User user) {
System.out.println("Received User: " + user.getName());
return user; // Object থেকে JSON-এ রূপান্তর করে Response দেয়
}
}
Spring Boot JSON Configuration:
Spring Boot স্বয়ংক্রিয়ভাবে Jackson ব্যবহার করে। আলাদা কিছু করতে হয় না।
সংক্ষেপে
- Spring OXM XML প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
- JSON প্রসেসিংয়ের জন্য Jackson বা Gson ব্যবহার করতে হবে।
- Spring Boot ব্যবহার করলে সহজেই Object-JSON Mapping করা যায়।
Spring OXM (Object XML Mapping) হল Spring Framework-এর একটি উপাদান, যা Java অবজেক্ট এবং XML ডেটার মধ্যে ম্যাপিং করার জন্য ব্যবহৃত হয়। এটি XML-এর সাথে কাজ করার জন্য সরলীকৃত এবং স্ট্যান্ডার্ড পদ্ধতি প্রদান করে। যদিও Spring OXM সাধারণত XML-এর জন্য ব্যবহৃত হয়, JSON-এর মতো ডেটা ফর্ম্যাটের সাথে একত্রিকরণ করার জন্য এর কাস্টমাইজেশন ব্যবহার করা যায়।
নিচে Spring OXM ব্যবহার করে JSON ইন্টিগ্রেশনের উদাহরণ দেখানো হয়েছে:
উদাহরণ: Spring OXM দিয়ে JSON Serialize এবং Deserialize
প্রয়োজনীয় নির্ভরতা (Maven)
<dependencies>
<!-- Spring OXM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>5.3.25</version>
</dependency>
<!-- Jackson for JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
</dependencies>
Java ক্লাস
package com.example.oxm;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("id")
private int id;
@JsonProperty("name")
private String name;
@JsonProperty("email")
private String email;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Spring Bean Configuration
package com.example.oxm;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(User.class);
return marshaller;
}
}
JSON Serialization এবং Deserialization
package com.example.oxm;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class JsonIntegrationExample {
@Autowired
private ObjectMapper objectMapper;
public String serializeToJson(User user) throws Exception {
// Object to JSON String
return objectMapper.writeValueAsString(user);
}
public User deserializeFromJson(String json) throws Exception {
// JSON String to Object
return objectMapper.readValue(json, User.class);
}
}
Main Method
package com.example.oxm;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
JsonIntegrationExample jsonExample = context.getBean(JsonIntegrationExample.class);
try {
// Create a User object
User user = new User();
user.setId(1);
user.setName("John Doe");
user.setEmail("john.doe@example.com");
// Serialize to JSON
String json = jsonExample.serializeToJson(user);
System.out.println("Serialized JSON: " + json);
// Deserialize from JSON
User deserializedUser = jsonExample.deserializeFromJson(json);
System.out.println("Deserialized User: " + deserializedUser.getName() + ", " + deserializedUser.getEmail());
} catch (Exception e) {
e.printStackTrace();
}
}
}
আউটপুট
Serialized JSON: {"id":1,"name":"John Doe","email":"john.doe@example.com"}
Deserialized User: John Doe, john.doe@example.com
এই উদাহরণে, Spring OXM মূলত XML প্রসেসিং-এর জন্য ব্যবহৃত হলেও, আমরা Jackson ObjectMapper ব্যবহার করে JSON-এর সাথে কাজ করেছি। JSON ইন্টিগ্রেশনের জন্য ObjectMapper একটি কার্যকরী পদ্ধতি প্রদান করে।
Read more