Apache Commons BeanUtils এবং PropertyUtils লাইব্রেরিগুলোর describe() মেথড ব্যবহার করে আপনি সহজেই একটি Bean-এর সমস্ত প্রপার্টি এবং তাদের মানগুলোকে একটি Map-এ পরিণত করতে পারেন। এই মেথডগুলো ডায়নামিক অ্যাপ্লিকেশন তৈরি করার জন্য কার্যকর, যেখানে Bean-এর প্রপার্টি সম্পর্কে runtime-এ তথ্য সংগ্রহ প্রয়োজন হয়।
1. BeanUtils.describe()
বর্ণনা:
BeanUtils.describe()একটি Bean-এর সকল প্রপার্টি এবং তাদের মানকে একটি Map<String, String>-এ রূপান্তর করে।- এটি getter মেথডগুলোর মাধ্যমে প্রপার্টিগুলোর মান সংগ্রহ করে এবং মানগুলো সবসময় String ফরম্যাটে থাকে।
- এটি টাইপ কনভার্সন করে, তাই প্রপার্টিগুলো String হিসেবে রিটার্ন হয়।
সিনট্যাক্স:
Map<String, String> BeanUtils.describe(Object bean) throws Exception;উদাহরণ: BeanUtils.describe()
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
public class BeanUtilsDescribeExample {
public static void main(String[] args) {
try {
// Create a Person object
Person person = new Person("John", 30);
// Describe the Person object as a Map
Map<String, String> properties = BeanUtils.describe(person);
// Print the properties
for (Map.Entry<String, String> entry : properties.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and Setter methods
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;
}
}আউটপুট:
class: Person
name: John
age: 30ব্যাখ্যা:
classপ্রপার্টি Bean-এর ক্লাসের নাম দেখায়।nameএবংageপ্রপার্টি Bean-এর গেটার মেথড থেকে প্রাপ্ত মান।
2. PropertyUtils.describe()
বর্ণনা:
PropertyUtils.describe()একটি Bean-এর সকল প্রপার্টি এবং তাদের মানকে একটি Map<String, Object>-এ রূপান্তর করে।- এটি টাইপ কনভার্সন করে না। প্রপার্টিগুলোর আসল টাইপ বজায় থাকে।
- এটি getter মেথডের মাধ্যমে প্রপার্টির মান সংগ্রহ করে।
সিনট্যাক্স:
Map<String, Object> PropertyUtils.describe(Object bean) throws Exception;উদাহরণ: PropertyUtils.describe()
import org.apache.commons.beanutils.PropertyUtils;
import java.util.Map;
public class PropertyUtilsDescribeExample {
public static void main(String[] args) {
try {
// Create a Person object
Person person = new Person("John", 30);
// Describe the Person object as a Map
Map<String, Object> properties = PropertyUtils.describe(person);
// Print the properties
for (Map.Entry<String, Object> entry : properties.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and Setter methods
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;
}
}আউটপুট:
class: Person
name: John
age: 30ব্যাখ্যা:
classপ্রপার্টি Bean-এর ক্লাসের নাম দেখায়।- প্রপার্টিগুলোর মান তাদের আসল টাইপ বজায় রাখে (যেমন,
ageএকটিIntegerথাকবে)।
BeanUtils.describe() বনাম PropertyUtils.describe()
| বৈশিষ্ট্য | BeanUtils.describe() | PropertyUtils.describe() |
|---|---|---|
| আউটপুট টাইপ | Map<String, String> | Map<String, Object> |
| টাইপ কনভার্সন | প্রপার্টিগুলো String ফরম্যাটে রূপান্তরিত হয়। | প্রপার্টিগুলোর আসল টাইপ বজায় থাকে। |
| ব্যবহার ক্ষেত্র | যখন প্রপার্টিগুলো String ফরম্যাটে প্রয়োজন। | টাইপ কনভার্সন ছাড়া প্রপার্টি মান প্রয়োজন। |
| Nested Properties | Nested প্রপার্টিগুলোর মান সরাসরি এক্সেস করা যায় না। | Nested প্রপার্টিগুলোর মান সরাসরি এক্সেস করা যায় না। |
| উদ্দেশ্য | সাধারণত ডেটা ডিবাগিং বা লগিং এর জন্য ব্যবহৃত। | টাইপ কনভার্সন ছাড়াই ডেটা প্রসেসিং। |
Nested Properties এর সীমাবদ্ধতা
- BeanUtils.describe() বা PropertyUtils.describe() সরাসরি Nested Properties হ্যান্ডল করে না। তবে আপনি Nested Properties ম্যানুয়ালি এক্সেস করতে পারেন:
উদাহরণ:
String street = (String) PropertyUtils.getNestedProperty(person, "address.street");সারাংশ
BeanUtils.describe()এবংPropertyUtils.describe()একটি Bean-এর প্রপার্টিগুলোর তালিকা তৈরি করতে ব্যবহার করা হয়।BeanUtils.describe()প্রপার্টিগুলোর মান সবসময়Stringহিসেবে প্রদান করে, যেখানেPropertyUtils.describe()আসল টাইপ বজায় রাখে।- Bean-এর ডায়নামিক ডেটা ম্যানিপুলেশনে এই মেথডগুলো কার্যকরী। টাইপ কনভার্সনের প্রয়োজন অনুযায়ী এই দুটি মেথডের একটি বেছে নিন।
Content added || updated By
Read more