Dynamic Bean Creation এবং Properties এর Runtime Management

DynaBeans (ডায়না বিনস) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

410

Java প্রোগ্রামিং-এ Dynamic Bean Creation এবং Runtime Property Management গুরুত্বপূর্ণ, যখন অ্যাপ্লিকেশন চলার সময় নতুন Bean তৈরি বা ম্যানিপুলেট করতে হয়। Apache Commons BeanUtils এবং Reflection API ব্যবহার করে এই কাজগুলি সহজে করা যায়।


Dynamic Bean Creation

Dynamic Bean Creation করার উপায়

  1. Java Reflection API ব্যবহার করে ক্লাসের ইনস্ট্যান্স তৈরি।
  2. Apache Commons BeanUtils ব্যবহার করে প্রপার্টি সেট করা।

উদাহরণ: Reflection API দিয়ে Dynamic Bean Creation

import java.lang.reflect.Field;

public class DynamicBeanCreationExample {
    public static void main(String[] args) {
        try {
            // Dynamically create an instance of Person class
            Class<?> personClass = Class.forName("Person");
            Object person = personClass.getDeclaredConstructor().newInstance();

            // Set properties dynamically
            Field nameField = personClass.getDeclaredField("name");
            nameField.setAccessible(true); // Make private field accessible
            nameField.set(person, "John Doe");

            Field ageField = personClass.getDeclaredField("age");
            ageField.setAccessible(true);
            ageField.set(person, 30);

            // Print properties
            System.out.println("Name: " + nameField.get(person));
            System.out.println("Age: " + ageField.get(person));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person() {}

    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;
    }
}

উদাহরণ: BeanUtils দিয়ে Dynamic Bean Creation

import org.apache.commons.beanutils.BeanUtils;

import java.util.HashMap;
import java.util.Map;

public class DynamicBeanCreationWithBeanUtils {
    public static void main(String[] args) {
        try {
            // Dynamically create an instance of Person
            Person person = new Person();

            // Create a map of properties
            Map<String, Object> properties = new HashMap<>();
            properties.put("name", "Jane Doe");
            properties.put("age", 28);

            // Populate the bean with properties
            BeanUtils.populate(person, properties);

            // Print properties
            System.out.println("Name: " + person.getName());
            System.out.println("Age: " + person.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person() {}

    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;
    }
}

আউটপুট:

Name: Jane Doe
Age: 28

ব্যাখ্যা:

  1. BeanUtils.populate() মেথড ব্যবহার করে একটি Map-এর মান Person Bean-এ কপি করা হয়েছে।
  2. এটি ডাইনামিকভাবে নতুন প্রপার্টি সেট করার ক্ষেত্রে কার্যকর।

Runtime Property Management

Runtime-এ Properties Access এবং Manipulate করা

BeanUtils এবং PropertyUtils লাইব্রেরি আপনাকে Bean-এর প্রপার্টি অ্যাক্সেস এবং ম্যানিপুলেট করতে সহায়তা করে।

BeanUtils দিয়ে Properties Access এবং ম্যানিপুলেশন

import org.apache.commons.beanutils.BeanUtils;

public class RuntimePropertyManagementWithBeanUtils {
    public static void main(String[] args) {
        try {
            // Create an instance of Person
            Person person = new Person();

            // Set properties dynamically
            BeanUtils.setProperty(person, "name", "John");
            BeanUtils.setProperty(person, "age", 35);

            // Get properties dynamically
            String name = BeanUtils.getProperty(person, "name");
            String age = BeanUtils.getProperty(person, "age");

            // Print properties
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person() {}

    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;
    }
}

আউটপুট:

Name: John
Age: 35

ব্যাখ্যা:

  1. BeanUtils.setProperty(): ডাইনামিকভাবে একটি প্রপার্টি সেট করা হয়েছে।
  2. BeanUtils.getProperty(): ডাইনামিকভাবে একটি প্রপার্টি পড়া হয়েছে।

PropertyUtils দিয়ে Properties Access এবং ম্যানিপুলেশন

import org.apache.commons.beanutils.PropertyUtils;

public class RuntimePropertyManagementWithPropertyUtils {
    public static void main(String[] args) {
        try {
            // Create an instance of Person
            Person person = new Person();

            // Set properties dynamically
            PropertyUtils.setProperty(person, "name", "Jane");
            PropertyUtils.setProperty(person, "age", 40);

            // Get properties dynamically
            String name = (String) PropertyUtils.getProperty(person, "name");
            int age = (int) PropertyUtils.getProperty(person, "age");

            // Print properties
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person() {}

    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;
    }
}

আউটপুট:

Name: Jane
Age: 40

ব্যাখ্যা:

  1. PropertyUtils.setProperty(): প্রপার্টি সেট করা হয়েছে।
  2. PropertyUtils.getProperty(): প্রপার্টি পড়া হয়েছে।

Nested Properties Runtime-এ Manage করা

Nested Bean এর প্রপার্টি Access এবং Manipulate করার জন্য PropertyUtils সেরা পছন্দ।

উদাহরণ:

import org.apache.commons.beanutils.PropertyUtils;

public class NestedPropertyManagement {
    public static void main(String[] args) {
        try {
            // Create Person with Address
            Address address = new Address("123 Main St", "City A");
            Person person = new Person("John", 30, address);

            // Access nested properties
            String street = (String) PropertyUtils.getNestedProperty(person, "address.street");
            System.out.println("Street: " + street);

            // Modify nested properties
            PropertyUtils.setNestedProperty(person, "address.street", "456 Elm St");
            System.out.println("Updated Street: " + person.getAddress().getStreet());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

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;
    }
}

আউটপুট:

Street: 123 Main St
Updated Street: 456 Elm St

সারাংশ

  • Dynamic Bean Creation:
    • Reflection API এবং BeanUtils ব্যবহার করে Dynamic Bean তৈরি করা যায়।
    • Map থেকে Bean-এ ডেটা Populate করা BeanUtils দিয়ে সহজ।
  • Runtime Property Management:
    • BeanUtils এবং PropertyUtils দিয়ে প্রপার্টি ডাইনামিকভাবে সেট এবং পড়া যায়।
    • Nested Properties Access এবং Manipulation করার জন্য PropertyUtils কার্যকর।
  • আপনার কাজের প্রয়োজন অনুযায়ী BeanUtils বা PropertyUtils নির্বাচন করুন। BeanUtils টাইপ কনভার্সন সাপোর্ট করে, যেখানে PropertyUtils আসল টাইপ বজায় রাখে
Content added || updated By
Promotion

Are you sure to start over?

Loading...