@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 ব্যবহার করা আরও জনপ্রিয়, কারণ এটি সহজে গ্রুপড কনফিগারেশন ডেটা একত্রে ইনজেক্ট করতে সক্ষম করে।
Read more