Spring Expression Language (SpEL) এর মাধ্যমে Spring Bean গুলোর রেফারেন্স করতে বা তাদের অ্যাক্সেস করতে # সিম্বল ব্যবহার করা হয়। SpEL ব্যবহারের মাধ্যমে Spring কনটেইনারের মধ্যে বিদ্যমান বিভিন্ন Bean-এর মধ্যে একে অপরকে রেফারেন্স করা সম্ভব। এটি Bean Injection, Bean Method Access এবং Bean Property Access এর ক্ষেত্রে খুবই কার্যকরী হয়।
SpEL-এর মাধ্যমে Spring Bean রেফারেন্স করা সাধারণত XML কনফিগারেশন বা অ্যানোটেশন-এ ব্যবহার করা হয়, যা Spring Framework-এ ডাইনামিক ডেটা অ্যাক্সেস এবং কনফিগারেশন ইনজেকশন সহজ করে।
Spring Bean Reference করার সিনট্যাক্স
Spring Bean-এর রেফারেন্স করতে SpEL এ সাধারণত #{} সিম্বল ব্যবহার করা হয়। Bean রেফারেন্সের জন্য # সিম্বল ব্যবহার করা হয়, এবং Bean নামটি সেখানে উল্লেখ করা হয়।
#{beanName.property}
এখানে beanName হলো Spring কনটেইনারে ডিফাইন করা Bean-এর নাম এবং property হলো ওই Bean-এর প্রপার্টি যা আপনি রেফারেন্স করতে চান।
Spring Bean Reference করার উদাহরণ
১. Spring XML কনফিগারেশনে Bean Reference করা
ধরা যাক, আমাদের দুটি Bean আছে - Employee এবং EmployeeService। এখানে আমরা EmployeeService Bean-এর মধ্যে Employee Bean রেফারেন্স করব SpEL ব্যবহার করে।
Employee Bean:
@Component
public class Employee {
private String name = "John Doe";
public String getName() {
return name;
}
}
EmployeeService Bean:
@Component
public class EmployeeService {
private String employeeName;
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public String getEmployeeName() {
return employeeName;
}
}
Spring XML কনফিগারেশন (SpEL ব্যবহার করে Bean রেফারেন্স):
<bean id="employee" class="com.example.Employee" />
<bean id="employeeService" class="com.example.EmployeeService">
<property name="employeeName" value="#{employee.name}" />
</bean>
এখানে, employeeService Bean-এর employeeName প্রপার্টিতে employee Bean এর name প্রপার্টির মান সেট করা হয়েছে।
২. SpEL ব্যবহার করে Bean Method Call
SpEL ব্যবহার করে আপনি Bean-এর মেথডও কল করতে পারেন। নিচের উদাহরণে EmployeeService Bean-এর মধ্যে Employee Bean-এর মেথড কল করা হয়েছে।
Spring XML কনফিগারেশন (Bean Method Call):
<bean id="employee" class="com.example.Employee" />
<bean id="employeeService" class="com.example.EmployeeService">
<property name="employeeName" value="#{employee.getName()}" />
</bean>
এখানে employeeService Bean-এ employee.getName() মেথড কল করা হচ্ছে, যাতে employee Bean-এর name প্রপার্টির মান পাওয়া যায়।
Spring Bean Reference করার অ্যানোটেশন উদাহরণ
Spring অ্যানোটেশন ব্যবহারের মাধ্যমে SpEL ব্যবহার করা যেতে পারে, যেখানে @Value অ্যানোটেশন দিয়ে Bean রেফারেন্স করা হয়।
১. Bean Method Call with SpEL using @Value Annotation:
@Component
public class EmployeeService {
@Autowired
private Employee employee;
@Value("#{employee.getName()}")
private String employeeName;
public String getEmployeeName() {
return employeeName;
}
}
এখানে employee.getName() SpEL ব্যবহার করে Employee Bean-এর getName() মেথড কল করা হয়েছে।
২. Spring Bean Reference using @Value Annotation:
@Component
public class EmployeeService {
@Autowired
private Employee employee;
@Value("#{employee.name}")
private String employeeName;
public String getEmployeeName() {
return employeeName;
}
}
এখানে employee.name SpEL ব্যবহার করে Employee Bean-এর name প্রপার্টি রেফারেন্স করা হয়েছে।
Spring Bean Reference এর সুবিধা
- ডাইনামিক কনফিগারেশন: SpEL ব্যবহার করে Spring Bean-এর প্রপার্টি এবং মেথডগুলোকে কনফিগারেশনে ডাইনামিকভাবে রেফারেন্স করা যায়।
- সহজ ডেটা ইনজেকশন: Spring Bean-এর মধ্যে নির্দিষ্ট প্রপার্টি বা মেথডের মান সরাসরি ইনজেক্ট করা যায়।
- Bean Interaction: এক Bean থেকে অন্য Bean-এর ডেটা বা মেথড অ্যাক্সেস করা সহজ হয়।
SpEL এর মাধ্যমে Bean Reference করার অন্যান্য উদাহরণ
১. Map বা Collection Reference:
<bean id="employee" class="com.example.Employee">
<property name="name" value="John Doe"/>
</bean>
<bean id="employeeService" class="com.example.EmployeeService">
<property name="employeeName" value="#{employee.name}"/>
</bean>
২. SpEL এবং Collection Access:
@Component
public class EmployeeService {
@Value("#{employeeList[0].name}")
private String firstEmployeeName;
public String getFirstEmployeeName() {
return firstEmployeeName;
}
}
এখানে, employeeList নামক লিস্ট থেকে প্রথম Employee Bean-এর name রেফারেন্স করা হচ্ছে।
Spring Expression Language (SpEL) Spring Bean রেফারেন্স করার ক্ষেত্রে খুবই কার্যকরী, কারণ এটি Spring কনটেইনারের মধ্যে Bean-এর মধ্যে সম্পর্ক এবং ডেটা অ্যাক্সেস সহজ করে। SpEL-এ Bean রেফারেন্স এবং Bean-এর মেথড বা প্রপার্টি এক্সপ্রেসন ব্যবহারের মাধ্যমে আপনি Spring কনফিগারেশন এবং অ্যানোটেশন কোডকে আরও ডাইনামিক এবং নমনীয় করতে পারেন।