Java Technologies উদাহরণ সহ Spring Integration গাইড ও নোট

247

MapStruct একটি annotation-based code generator যা JavaBeans এর মধ্যে ম্যাপিং অপারেশন সহজ এবং পারফর্ম্যান্টভাবে সম্পাদন করতে ব্যবহৃত হয়। এটি Spring ফ্রেমওয়ার্কের সাথে খুব সহজে ইন্টিগ্রেট করা যায় এবং MapStruct এর মেথডগুলি Spring Beans হিসেবে ব্যবহার করা সম্ভব হয়।

এই টিউটোরিয়ালে আমরা দেখবো MapStruct এর মাধ্যমে Spring Integration কিভাবে করা যায় এবং Spring Beans হিসেবে মেপিং কনফিগারেশন কিভাবে তৈরি করতে হয়।


১. Spring Integration with MapStruct

MapStruct এর সাথে Spring ইন্টিগ্রেট করার জন্য আপনাকে কিছু কনফিগারেশন করতে হবে, যাতে MapStruct এর তৈরি করা Mapper Interface কে Spring Beans হিসেবে ব্যবহৃত করা যায়। Spring এ এটি করার জন্য, @Mapper(componentModel = "spring") অ্যানোটেশন ব্যবহার করা হয়।

এটি Spring Container এ Mapper ইনস্ট্যান্স তৈরি করতে সহায়তা করে, যার ফলে আপনি Spring এর মাধ্যমে মেপিং সেবা ব্যবহার করতে পারবেন।

উদাহরণ: Spring Integration with MapStruct

ধরা যাক, আমাদের দুটি JavaBean Person এবং PersonDTO রয়েছে, এবং আমরা এগুলির মধ্যে ম্যাপিং করতে চাই। Spring Integration এর মাধ্যমে আমরা MapStruct Mapper এর সাহায্যে এই ম্যাপিং প্রক্রিয়া সম্পন্ন করবো।


২. Spring এর সাথে MapStruct সেটআপ

প্রথমে, আমাদের MapStruct এর প্রয়োজনীয় ডিপেনডেন্সি pom.xml ফাইলে যুক্ত করতে হবে।

Maven ডিপেনডেন্সি:

<dependencies>
    <!-- MapStruct Dependency -->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>1.5.2.Final</version>
    </dependency>

    <!-- MapStruct Processor (for compile-time code generation) -->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>1.5.2.Final</version>
        <scope>provided</scope>
    </dependency>

    <!-- Spring Boot Dependency (for integration) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

এখানে, MapStruct এবং MapStruct Processor এর ডিপেনডেন্সি গুলি যুক্ত করা হয়েছে, যা compile-time কোড জেনারেট করতে সাহায্য করবে।


৩. MapStruct Mapper Interface এর কনফিগারেশন

Spring Integration এর জন্য, @Mapper অ্যানোটেশন ব্যবহার করা হয়, এবং componentModel = "spring" প্রপার্টি দিয়ে এটি Spring Bean হিসেবে কনফিগার করা হয়।

উদাহরণ: Mapper Interface

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper(componentModel = "spring")
public interface PersonMapper {

    // Mapping method to map Person to PersonDTO
    PersonDTO personToPersonDTO(Person person);
}

এখানে, componentModel = "spring" ব্যবহৃত হয়েছে, যা MapStruct কে Spring Beans হিসেবে কাজ করার অনুমতি দেয়। এর ফলে PersonMapper কে Spring Context এর মধ্যে ইন্টিগ্রেট করা যাবে।


৪. Person এবং PersonDTO ক্লাস

এখন, Person এবং PersonDTO ক্লাস তৈরি করি, যেগুলির মধ্যে ম্যাপিং করা হবে।

Person.java (Domain Object):

public class Person {
    private String name;
    private int age;

    // Getters and Setters
}

PersonDTO.java (DTO):

public class PersonDTO {
    private String name;
    private int age;

    // Getters and Setters
}

৫. Spring Service বা Controller এ MapStruct Mapper ব্যবহার

এখন, আপনি Spring Service বা Controller ক্লাসে PersonMapper কে Autowired দিয়ে ব্যবহার করতে পারেন।

PersonService.java (Spring Service):

import org.springframework.stereotype.Service;

@Service
public class PersonService {

    private final PersonMapper personMapper;

    // Injecting the Mapper
    public PersonService(PersonMapper personMapper) {
        this.personMapper = personMapper;
    }

    public PersonDTO convertPersonToDTO(Person person) {
        return personMapper.personToPersonDTO(person);
    }
}

এখানে, PersonMapper কে Spring Bean হিসেবে ইনজেক্ট করা হয়েছে এবং convertPersonToDTO মেথডে Person অবজেক্টকে PersonDTO তে ম্যাপ করা হচ্ছে।


৬. Spring Controller এ MapStruct Mapper ব্যবহার

Spring Controller এর মধ্যে PersonService ব্যবহার করে আপনি API রাউটেও MapStruct ম্যাপিং ব্যবহার করতে পারেন।

PersonController.java (Spring Controller):

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PersonController {

    private final PersonService personService;

    public PersonController(PersonService personService) {
        this.personService = personService;
    }

    @GetMapping("/convert")
    public PersonDTO convertPersonToDTO() {
        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);
        
        return personService.convertPersonToDTO(person);
    }
}

এখানে, PersonControllerPersonService ইনজেক্ট করা হয়েছে এবং একটি GET API তৈরি করা হয়েছে যা Person অবজেক্টকে PersonDTO তে কনভার্ট করে।


৭. Spring Boot অ্যাপ্লিকেশন চালানো

এখন, আপনার Spring Boot অ্যাপ্লিকেশন চলবে এবং MapStruct এর মাধ্যমে Person থেকে PersonDTO ম্যাপিং হয়ে যাবে। অ্যাপ্লিকেশন চালানোর পর, আপনি http://localhost:8080/convert URL এ GET রিকোয়েস্ট করলে PersonDTO আউটপুট পাবেন।


সারাংশ

MapStruct এবং Spring Integration একসাথে ব্যবহারের মাধ্যমে আপনি সহজেই আপনার JavaBeans বা DTOs এর মধ্যে দ্রুত এবং কার্যকরী ম্যাপিং করতে পারেন। MapStruct এর componentModel = "spring" কনফিগারেশন Spring Beans হিসেবে Mapper এর ইন্টিগ্রেশন সহজ করে দেয়। এর ফলে, আপনি আপনার Service বা Controller ক্লাসে MapStruct Mapper ব্যবহার করতে পারেন, যা আপনার কোডকে পরিষ্কার এবং সহজ করে তোলে।

MapStruct এর সাথে Spring ইন্টিগ্রেট করা খুবই সহজ এবং এটি Spring প্রোজেক্টগুলিতে ম্যাপিংয়ের জন্য একটি শক্তিশালী এবং কার্যকরী সমাধান প্রদান করে।


Content added By
Promotion

Are you sure to start over?

Loading...