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;
}
}ব্যাখ্যা:
- Custom Converter:
StringToAddressConverterএকটি কাস্টম কনভার্টার যা একটিStringকেAddressঅবজেক্টে কনভার্ট করে। - ConvertUtils.register(): এই মেথড ব্যবহার করে
StringToAddressConverterরেজিস্টার করা হয়েছে। - 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());
}
};
}
}ব্যাখ্যা:
- AddressPropertyEditor: এটি একটি কাস্টম প্রপার্টি এডিটর যা একটি
StringকেAddressঅবজেক্টে কনভার্ট করে। - PropertyEditorRegistrar: Spring-এ
AddressPropertyEditorরেজিস্টার করার জন্য এই ক্লাস ব্যবহার করা হয়েছে। - ApplicationContext: Spring এর
ApplicationContextকনফিগার করেPersonBean-এ কাস্টম প্রপার্টি এডিটর প্রয়োগ করা হয়েছে।
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 ব্যবহার করুন।
Read more