Spring Boot এবং Gson এর ইন্টিগ্রেশন একটি সহজ পদ্ধতি যা আপনাকে Spring Boot অ্যাপ্লিকেশনে JSON প্রসেসিং করার সময় Gson ব্যবহার করতে সহায়তা করে। Spring Boot সাধারণত Jackson লাইব্রেরি দিয়ে JSON প্রসেসিং করে, কিন্তু আপনি চাইলে Gson লাইব্রেরি ব্যবহার করতে পারেন যদি আপনাকে অতিরিক্ত কাস্টমাইজেশন বা বৈশিষ্ট্য প্রয়োজন হয়।
এখানে আমরা দেখাবো কিভাবে Spring Boot অ্যাপ্লিকেশনে Gson ইন্টিগ্রেট করা যায় এবং JSON রূপান্তরের জন্য কাস্টম Serializer এবং Deserializer ব্যবহার করা যায়।
১. Gson Dependency যুক্ত করা
প্রথমে Gson লাইব্রেরি আপনার Spring Boot প্রোজেক্টে যোগ করতে হবে। যদি আপনার প্রোজেক্ট Maven ব্যবহার করে, তবে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version> <!-- বা আপনার প্রোজেক্টের জন্য সর্বশেষ ভার্সন -->
</dependency>
যদি আপনি Gradle ব্যবহার করেন, তবে build.gradle ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
implementation 'com.google.code.gson:gson:2.8.8'
২. Gson কে Spring Boot এ কনফিগার করা
Spring Boot এর মধ্যে Gson ব্যবহার করতে হলে, আপনাকে Gson কে Spring Context এ কনফিগার করতে হবে। এটি করার জন্য একটি @Configuration ক্লাস তৈরি করতে হবে এবং সেখানে Gson Bean কনফিগার করতে হবে।
Gson Bean Configuration:
import com.google.gson.Gson;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class GsonConfig {
@Bean
public Gson gson() {
return new Gson(); // Gson Bean প্রদান
}
}
এই কনফিগারেশনের মাধ্যমে Spring Boot এর context-এ Gson Bean তৈরি হবে এবং অন্যান্য অংশে এটি ইনজেক্ট করা যাবে।
৩. Spring Boot Controller Example with Gson
এখন Gson ব্যবহার করে JSON প্রক্রিয়াকরণের একটি উদাহরণ দেখে নেবো। আমরা একটি Controller তৈরি করবো যা JSON ডেটাকে Gson ব্যবহার করে পার্স করবে এবং রেসপন্স দিবে।
Example Model Class:
public class Person {
private String name;
private int age;
// Constructors, Getters, Setters
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Controller with Gson:
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
private Gson gson;
@PostMapping("/create")
public String createPerson(@RequestBody String json) {
// Deserialize JSON to Person object
Person person = gson.fromJson(json, Person.class);
// Do something with the object (e.g., save to DB)
// Return the same object back as JSON (Serialization)
return gson.toJson(person);
}
}
Explanation:
- এখানে,
@PostMapping("/create")মেথডটি একটি POST রিকোয়েস্ট গ্রহণ করে, যেখানে JSON ডেটাStringআকারে আসে। এই JSON ডেটাকে আমরাgson.fromJson()ব্যবহার করে Person অবজেক্টে রূপান্তরিত করি। - তারপর, আমরা
gson.toJson()ব্যবহার করে সেই অবজেক্টটিকে আবার JSON ফরম্যাটে রূপান্তরিত করে ক্লায়েন্টকে রেসপন্স পাঠাই।
Example Request:
POST Request:
{
"name": "John",
"age": 25
}
Example Response:
{
"name": "John",
"age": 25
}
৪. Gson Serializer এবং Deserializer ব্যবহার করা
Spring Boot এবং Gson ইন্টিগ্রেট করার সময়, আপনি কাস্টম serializer এবং deserializer তৈরি করতে পারেন। ধরুন, আমরা Person ক্লাসের জন্য একটি কাস্টম serializer তৈরি করতে চাই যা age ফিল্ডকে বড় করে দেখাবে (যেমন, 25 কে "25 years old" এ রূপান্তর করা)।
Custom Serializer Example:
import com.google.gson.*;
import java.lang.reflect.Type;
public class PersonSerializer implements JsonSerializer<Person> {
@Override
public JsonElement serialize(Person person, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", person.getName());
jsonObject.addProperty("age", person.getAge() + " years old"); // Custom serialization logic
return jsonObject;
}
}
Custom Deserializer Example:
import com.google.gson.*;
import java.lang.reflect.Type;
public class PersonDeserializer implements JsonDeserializer<Person> {
@Override
public Person deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
String name = jsonObject.get("name").getAsString();
String ageString = jsonObject.get("age").getAsString();
int age = Integer.parseInt(ageString.replace(" years old", "")); // Custom deserialization logic
return new Person(name, age);
}
}
Gson Configuration with Custom Serializer and Deserializer:
@Configuration
public class GsonConfig {
@Bean
public Gson gson() {
return new GsonBuilder()
.registerTypeAdapter(Person.class, new PersonSerializer()) // Register custom serializer
.registerTypeAdapter(Person.class, new PersonDeserializer()) // Register custom deserializer
.create();
}
}
এখানে, আমরা PersonSerializer এবং PersonDeserializer তৈরি করেছি, এবং GsonConfig ক্লাসের মধ্যে তাদেরকে Gson Bean এ রেজিস্টার করেছি।
৫. Spring Boot Application Example:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GsonApplication {
public static void main(String[] args) {
SpringApplication.run(GsonApplication.class, args);
}
}
Spring Boot এবং Gson ইন্টিগ্রেশন অনেক সুবিধাজনক। Gson আপনার JSON ডেটাকে serialization এবং deserialization করার জন্য একটি শক্তিশালী এবং কাস্টমাইজযোগ্য অপশন প্রদান করে। আপনি Spring Boot এর REST API তে Gson ব্যবহার করতে পারেন এবং এর custom serializers এবং deserializers দিয়ে JSON রূপান্তরের গঠন পরিবর্তন করতে পারেন।
এটি JSON parsing এবং object mapping সহজ করে দেয়, এবং Jackson এর বদলে Gson ব্যবহার করার জন্য এক্সটেনসিভ কাস্টমাইজেশন প্রদান করে।
Read more