Custom Converters এবং Property Editors তৈরি করা

BeanUtilsBean Customization (বিনইউটিলস বিন কাস্টমাইজেশন) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

294

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


1. Custom Converters তৈরি করা (Apache Commons BeanUtils)

Apache Commons BeanUtils-এ Converter ইন্টারফেস ব্যবহার করে আপনি কাস্টম টাইপ কনভার্টার তৈরি করতে পারেন।

উদাহরণ: Custom Converter ব্যবহার করে String থেকে Custom Object কনভার্ট করা

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 = "Street 123, City A";

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

            // Set the address property using BeanUtils
            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;
    }
}

// Person class with Address property
class Person {
    private Address address;

    public Address getAddress() {
        return address;
    }

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

// 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 String getCity() {
        return city;
    }
}

ব্যাখ্যা:

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

2. Custom Property Editors তৈরি করা (Spring Framework)

Spring Framework-এ Property Editors ব্যবহার করে Bean-এর প্রপার্টি ম্যানিপুলেশন আরও সহজ করা যায়। PropertyEditorSupport ক্লাস ব্যবহার করে কাস্টম প্রপার্টি এডিটর তৈরি করা হয়।

উদাহরণ: Custom Property Editor ব্যবহার করে String থেকে Custom Object কনভার্ট করা

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.beans.PropertyEditorSupport;

public class CustomPropertyEditorExample {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        // Retrieve the person bean
        Person person = context.getBean(Person.class);

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

        context.close();
    }
}

// Custom Property Editor
class AddressPropertyEditor extends PropertyEditorSupport {
    @Override
    public void setAsText(String text) {
        String[] parts = text.split(", ");
        setValue(new Address(parts[0], parts[1]));
    }
}

// Person class
class Person {
    private Address address;

    public Address getAddress() {
        return address;
    }

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

// 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 String getCity() {
        return city;
    }
}

// Configuration class
@Configuration
class AppConfig {

    @Bean
    public Person person() {
        Person person = new Person();
        person.setAddress(new Address("Default Street", "Default City")); // Placeholder
        return person;
    }

    @Bean
    public PropertyEditorRegistrar propertyEditorRegistrar() {
        return new PropertyEditorRegistrar() {
            @Override
            public void registerCustomEditors(PropertyEditorRegistry registry) {
                registry.registerCustomEditor(Address.class, new AddressPropertyEditor());
            }
        };
    }
}

ব্যাখ্যা:

  1. AddressPropertyEditor: এটি একটি কাস্টম প্রপার্টি এডিটর যা একটি String কে Address অবজেক্টে কনভার্ট করে।
  2. PropertyEditorRegistrar: Spring-এ AddressPropertyEditor রেজিস্টার করার জন্য এই ক্লাস ব্যবহার করা হয়েছে।
  3. ApplicationContext: Spring এর ApplicationContext কনফিগার করে Person Bean-এ কাস্টম প্রপার্টি এডিটর প্রয়োগ করা হয়েছে।

Custom Converters বনাম Property Editors

বৈশিষ্ট্যCustom Converters (BeanUtils)Property Editors (Spring)
ব্যবহারBeanUtils-এ টাইপ কনভার্সনের জন্য।Spring Bean-এ প্রপার্টি ম্যানিপুলেশনের জন্য।
ফ্লেক্সিবিলিটিশুধুমাত্র টাইপ কনভার্সনের জন্য ব্যবহৃত।টাইপ কনভার্সন এবং আরও অনেক ক্ষেত্রে কার্যকর।
কনটেক্সটStandalone Bean-এ প্রযোজ্য।Spring Framework নির্ভর।
কোড জটিলতাতুলনামূলক সহজ।কিছুটা বেশি কনফিগারেশন প্রয়োজন।

সারাংশ

  • Custom Converters ব্যবহার করা হয় টাইপ কনভার্সনকে সহজ করতে, যেখানে Property Editors Spring Framework-এর কনটেক্সটে আরও উন্নত ম্যানিপুলেশন করতে সহায়ক।
  • Apache Commons BeanUtils এবং Spring Framework উভয়ই কাস্টমাইজড টাইপ কনভার্সনের জন্য শক্তিশালী সমাধান প্রদান করে।
  • আপনার প্রয়োজন এবং ব্যবহারের ক্ষেত্র অনুযায়ী Custom Converters বা Property Editors ব্যবহার করুন।
Content added || updated By
Promotion

Are you sure to start over?

Loading...