@Value এবং @ConfigurationProperties এর মাধ্যমে DI পরিচালনা

Spring DI এবং Configuration Properties - স্প্রিং ডিপেনডেন্সি ইনজেকশন (ডিআই) (Spring Dependency Injection) - Java Technologies

290

@Value এবং @ConfigurationProperties এর ভূমিকা

Spring Framework ডিপেনডেন্সি ইনজেকশন (DI) পরিচালনা করতে দুটি গুরুত্বপূর্ণ অ্যানোটেশন প্রদান করে: @Value এবং @ConfigurationProperties। এই দুটি অ্যানোটেশন Spring Beans-এর প্রপার্টি ফাইল বা কনফিগারেশন ভ্যালু ইনজেক্ট করতে ব্যবহৃত হয়। এগুলি Spring Beans-এর জন্য কনফিগারেশন ভ্যালু সরবরাহের একটি নমনীয় এবং কার্যকর পদ্ধতি।

  • @Value: এটি Spring Bean-এ একক প্রপার্টি বা ভ্যালু ইনজেক্ট করার জন্য ব্যবহৃত হয়।
  • @ConfigurationProperties: এটি গ্রুপড কনফিগারেশন ভ্যালু বা প্রপার্টি ফাইলের একাধিক ভ্যালু ইনজেক্ট করার জন্য ব্যবহৃত হয়।

@Value অ্যানোটেশন ব্যবহার করে DI পরিচালনা

@Value অ্যানোটেশন ব্যবহার করে আপনি Spring Beans-এর মধ্যে একটি নির্দিষ্ট প্রপার্টি বা কনফিগারেশন ফাইলের ভ্যালু ইনজেক্ট করতে পারেন। এটি সাধারণত একক প্রপার্টি ইনজেকশনের জন্য ব্যবহৃত হয়, যেমন একটি স্ট্রিং, নাম্বার, বা Boolean ভ্যালু।

উদাহরণ:

ধরা যাক, আমাদের একটি প্রপার্টি ফাইল application.properties রয়েছে এবং আমরা সেটি Spring Bean এ ইনজেক্ট করতে চাই।

application.properties

employee.name=John Doe
employee.department=HR

Employee.java (Bean Class)

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class Employee {

    @Value("${employee.name}")
    private String name;

    @Value("${employee.department}")
    private String department;

    public void getEmployeeDetails() {
        System.out.println("Employee Name: " + name);
        System.out.println("Employee Department: " + department);
    }
}

এখানে @Value("${employee.name}") এবং @Value("${employee.department}") ব্যবহার করে প্রপার্টি ফাইলের ভ্যালু Spring Bean-এর মধ্যে ইনজেক্ট করা হয়েছে।

Spring Application Context

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
Employee employee = context.getBean(Employee.class);
employee.getEmployeeDetails();

এখানে, @Value অ্যানোটেশন প্রপার্টি ফাইল থেকে ভ্যালু ইনজেক্ট করে এবং getEmployeeDetails() মেথড কল করলে প্রিন্ট হবে:

Employee Name: John Doe
Employee Department: HR

@ConfigurationProperties অ্যানোটেশন ব্যবহার করে DI পরিচালনা

@ConfigurationProperties অ্যানোটেশন Spring Boot-এ একটি শক্তিশালী উপায় যা গ্রুপড কনফিগারেশন ভ্যালু ইনজেক্ট করতে ব্যবহৃত হয়। এটি প্রপার্টি ফাইল বা YAML ফাইলের মাধ্যমে গ্রুপড ভ্যালু সরাসরি Spring Beans-এর প্রপার্টিতে ইনজেক্ট করতে সক্ষম করে।

উদাহরণ:

application.properties

employee.name=John Doe
employee.department=HR
employee.salary=50000

Employee.java (Bean Class)

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "employee")
public class Employee {

    private String name;
    private String department;
    private int salary;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public void getEmployeeDetails() {
        System.out.println("Employee Name: " + name);
        System.out.println("Employee Department: " + department);
        System.out.println("Employee Salary: " + salary);
    }
}

এখানে @ConfigurationProperties(prefix = "employee") ব্যবহার করে Spring Bean এর মধ্যে employee.name, employee.department, এবং employee.salary প্রপার্টি ইনজেক্ট করা হয়েছে।

Spring Application Context

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
Employee employee = context.getBean(Employee.class);
employee.getEmployeeDetails();

এখানে, Spring Container employee.name, employee.department, এবং employee.salary ভ্যালু গুলি একত্রে ইনজেক্ট করবে এবং getEmployeeDetails() মেথড কল করলে প্রিন্ট হবে:

Employee Name: John Doe
Employee Department: HR
Employee Salary: 50000

@Value এবং @ConfigurationProperties এর মধ্যে পার্থক্য

বিষয়@Value@ConfigurationProperties
ইনজেক্টের পরিধিএকক প্রপার্টি বা ভ্যালু ইনজেক্ট করতে ব্যবহৃত হয়।গ্রুপড প্রপার্টি গুলি ইনজেক্ট করতে ব্যবহৃত হয়।
কনফিগারেশন ফাইলপ্রপার্টি ফাইল থেকে একক ভ্যালু ইনজেক্ট করা হয়।একাধিক প্রপার্টি ইনজেক্ট করার জন্য কনফিগারেশন ফাইল বা YAML ফাইল ব্যবহার করা হয়।
ব্যবহারসাধারণত ছোট অথবা একক প্রপার্টি ইনজেকশনের জন্য।বড় এবং গ্রুপড কনফিগারেশন প্রোপার্টি ইনজেকশনের জন্য।
ফ্লেক্সিবিলিটিএকক প্রপার্টি ব্যবহার করে সহজ এবং দ্রুত।জটিল কনফিগারেশন ডাটা যেমন, নেস্টেড প্রপার্টি সহজভাবে হ্যান্ডেল করতে পারে।
অ্যানোটেশন@Value("${property.key}")@ConfigurationProperties(prefix = "property.prefix")

সারাংশ

Spring Framework-এ @Value এবং @ConfigurationProperties দুটি অ্যানোটেশন Spring Beans-এ প্রপার্টি ইনজেকশন সহজভাবে সম্পন্ন করতে সহায়ক। @Value একক প্রপার্টি ইনজেকশন করার জন্য উপযুক্ত, যেখানে @ConfigurationProperties গ্রুপড কনফিগারেশন এবং কমপ্লেক্স প্রপার্টি ইনজেকশনের জন্য ব্যবহার করা হয়। Spring Boot-এ @ConfigurationProperties ব্যবহার করা আরও জনপ্রিয়, কারণ এটি সহজে গ্রুপড কনফিগারেশন ডেটা একত্রে ইনজেক্ট করতে সক্ষম করে।

Content added By
Promotion

Are you sure to start over?

Loading...