Custom Converters তৈরি এবং ব্যবহার করা

Date Handling এবং Custom Converters (তারিখ এবং কাস্টম কনভার্টার) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

362

Custom Converters হল এমন ক্লাস বা ফাংশন, যা একটি ডেটা টাইপ থেকে আরেকটি ডেটা টাইপে রূপান্তর করতে ব্যবহৃত হয়। এটি বিশেষভাবে প্রয়োজন হয় যখন আপনি আপনার প্রয়োজন অনুযায়ী ডেটা কনভার্ট করতে চান যা ডিফল্ট কনভার্সন সাপোর্ট করে না। Apache Commons BeanUtils এবং Spring Framework উভয়ই কাস্টম কনভার্টার তৈরির সুবিধা দেয়।


Custom Converters Apache Commons BeanUtils এ

Apache Commons BeanUtils লাইব্রেরি ব্যবহার করে কাস্টম কনভার্টার তৈরি করা যায়, যেখানে Converter ইন্টারফেস ব্যবহার করে টাইপ কনভার্সন কাস্টমাইজ করা হয়।

Custom Converter তৈরি এবং ব্যবহার উদাহরণ

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;

public class CustomConverterExample {
    public static void main(String[] args) {
        try {
            // Register the custom converter
            ConvertUtils.register(new StringToAddressConverter(), Address.class);

            // Source data
            String addressString = "123 Main St, City A";

            // Target object
            Person person = new Person();

            // Set the address property using BeanUtils (with custom converter)
            BeanUtils.setProperty(person, "address", addressString);

            // Output the converted Address object
            System.out.println("Street: " + person.getAddress().getStreet());
            System.out.println("City: " + person.getAddress().getCity());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

// Custom Converter: String to Address
class StringToAddressConverter implements Converter {
    @Override
    public Object convert(Class type, Object value) {
        if (value instanceof String) {
            String[] parts = ((String) value).split(", ");
            return new Address(parts[0], parts[1]);
        }
        return null;
    }
}

// Address class
class Address {
    private String street;
    private String city;

    public Address(String street, String city) {
        this.street = street;
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

// Person class
class Person {
    private Address address;

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}

ব্যাখ্যা:

  1. Custom Converter তৈরি: StringToAddressConverter ক্লাসটি তৈরি করা হয়েছে, যা Converter ইন্টারফেস ইমপ্লিমেন্ট করে।
  2. Converter রেজিস্ট্রেশন: ConvertUtils.register() মেথড ব্যবহার করে কাস্টম কনভার্টার রেজিস্টার করা হয়েছে।
  3. BeanUtils.setProperty(): কনভার্টার ব্যবহার করে String থেকে Address টাইপে কনভার্ট করে Person ক্লাসে সেট করা হয়েছে।

Custom Converters Spring Framework এ

Spring Framework-এ কাস্টম কনভার্টার তৈরি করতে Converter ইন্টারফেস ব্যবহার করা হয়, যা org.springframework.core.convert.converter.Converter প্যাকেজের অংশ।

Custom Converter তৈরি এবং ব্যবহার উদাহরণ

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.support.DefaultConversionService;

public class SpringCustomConverterExample {
    public static void main(String[] args) {
        // Create application context
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        // Get the conversion service
        DefaultConversionService conversionService = context.getBean(DefaultConversionService.class);

        // Convert String to Address using custom converter
        String addressString = "456 Elm St, City B";
        Address address = conversionService.convert(addressString, Address.class);

        // Output the converted Address object
        System.out.println("Street: " + address.getStreet());
        System.out.println("City: " + address.getCity());

        context.close();
    }
}

// Custom Converter: String to Address
class StringToAddressConverter implements Converter<String, Address> {
    @Override
    public Address convert(String source) {
        String[] parts = source.split(", ");
        return new Address(parts[0], parts[1]);
    }
}

// Address class
class Address {
    private String street;
    private String city;

    public Address(String street, String city) {
        this.street = street;
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

// Spring Configuration
@Configuration
class AppConfig {
    @Bean
    public DefaultConversionService conversionService() {
        DefaultConversionService conversionService = new DefaultConversionService();
        conversionService.addConverter(new StringToAddressConverter());
        return conversionService;
    }
}

ব্যাখ্যা:

  1. Custom Converter তৈরি: StringToAddressConverter একটি কনভার্টার যা String থেকে Address টাইপে রূপান্তর করে।
  2. DefaultConversionService: Spring এর ডিফল্ট কনভার্সন সার্ভিস ব্যবহার করা হয়েছে, যা কাস্টম কনভার্টার রেজিস্টার করার জন্য ব্যবহৃত হয়েছে।
  3. convert() মেথড: Spring এর কনভার্সন সার্ভিস ব্যবহার করে String থেকে Address কনভার্ট করা হয়েছে।

Custom Converters এর সুবিধা

  1. কাস্টম টাইপ সাপোর্ট: ডিফল্টভাবে সমর্থিত না এমন টাইপগুলোর জন্য কনভার্সন তৈরি করা।
  2. পুনঃব্যবহারযোগ্যতা (Reusability): একবার তৈরি করলে কাস্টম কনভার্টার বারবার ব্যবহার করা যায়।
  3. সারলীকরণ (Simplification): জটিল ডেটা টাইপ ম্যানিপুলেশন সহজ করা।
  4. Spring Integration: Spring Framework-এর কনভার্সন সার্ভিসে কাস্টম কনভার্টার সহজেই যোগ করা যায়।

Custom Converters BeanUtils বনাম Spring Framework এ

বৈশিষ্ট্যBeanUtils Custom ConverterSpring Custom Converter
ইন্টারফেসorg.apache.commons.beanutils.Converterorg.springframework.core.convert.converter.Converter
টাইপ কনভার্সন সাপোর্টটাইপ কনভার্সন এবং Bean ম্যানিপুলেশনটাইপ কনভার্সন এবং Spring Context Integration
রেজিস্ট্রেশনConvertUtils.register() ব্যবহার করা হয়।DefaultConversionService.addConverter() ব্যবহার করা হয়।
Spring Integrationসরাসরি সমর্থিত নয়।Spring Bean এবং Context-এর সাথে গভীরভাবে ইন্টিগ্রেটেড।

সারাংশ

  • BeanUtils-এ কাস্টম কনভার্টার তৈরি সহজ এবং ডায়নামিক টাইপ কনভার্সনের জন্য কার্যকর।
  • Spring Framework-এ কাস্টম কনভার্টার Spring Context এবং Bean Configuration-এর সাথে গভীরভাবে ইন্টিগ্রেট করা যায়।
  • আপনার প্রকল্পের ধরন অনুযায়ী BeanUtils বা Spring Framework ব্যবহার করুন। Spring বেশি শক্তিশালী এবং বৃহৎ অ্যাপ্লিকেশনের জন্য বেশি কার্যকর।
Content added || updated By
Promotion

Are you sure to start over?

Loading...