Spring Expression Language (SpEL) ব্যবহার করে আপনি Spring Beans বা সাধারণ Java objects এর মেথড কল করতে পারেন এবং প্যারামিটারও পাস করতে পারেন। এটি Spring Framework-এ ডাইনামিক কোড এক্সিকিউশন এবং কাস্টম লজিক প্রয়োগের জন্য খুবই শক্তিশালী টুল। SpEL ব্যবহার করে আপনি Object এর মেথড কল করতে এবং সেই মেথডে প্রয়োজনীয় প্যারামিটার পাস করতে পারবেন, যা আরও ডাইনামিক এবং ফ্লেক্সিবল কোড তৈরি করতে সাহায্য করে।
SpEL ব্যবহার করে Object মেথড কল করা
Spring Expression Language (SpEL) এ Object-এর মেথড কল করার জন্য #objectName.methodName() সিনট্যাক্স ব্যবহার করা হয়।
উদাহরণ:
ধরা যাক, আমাদের একটি Employee ক্লাস রয়েছে এবং সেই ক্লাসে একটি মেথড আছে যা কর্মচারীর বেতন হিসাব করে।
public class Employee {
private String name;
private double salary;
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
// Getter
public String getName() {
return name;
}
// Method to calculate bonus
public double calculateBonus(double percentage) {
return salary * percentage / 100;
}
}
এই Employee ক্লাসের calculateBonus মেথড কল করতে আমরা SpEL ব্যবহার করতে পারি।
Spring Configuration Class
Spring Configuration ক্লাসে SpEL এক্সপ্রেশন ব্যবহার করে Employee ক্লাসের মেথড কল করার উদাহরণ:
@Configuration
public class AppConfig {
@Bean
public Employee employee() {
return new Employee("John Doe", 50000);
}
@Bean
public String bonusCalculation() {
// SpEL Expression to call method
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("employee", employee()); // setting the Employee object
// Calling the method calculateBonus() with parameter 10 (percentage)
Double bonus = (Double) parser.parseExpression("#employee.calculateBonus(10)").getValue(context);
return "The calculated bonus is: " + bonus;
}
}
এখানে, আমরা employee() Bean দিয়ে Employee object তৈরি করেছি এবং তারপর SpEL এক্সপ্রেশন ব্যবহার করে calculateBonus(10) মেথড কল করেছি। মেথডে 10 প্যারামিটার হিসেবে পাস করা হয়েছে, যা বোনাসের শতাংশ।
SpEL ব্যবহার করে Object মেথডে প্যারামিটার পাস করা
SpEL এর মাধ্যমে আপনি মেথডে প্যারামিটার পাস করতে পারেন। এক্সপ্রেশন ব্যবহার করে মেথডের প্যারামিটার নির্ধারণ করা হয় এবং সেই অনুযায়ী মেথড কল করা হয়।
উদাহরণ:
public class MathOperations {
public int multiply(int a, int b) {
return a * b;
}
public int add(int a, int b) {
return a + b;
}
}
এখন, MathOperations ক্লাসের multiply এবং add মেথড কল করার জন্য SpEL ব্যবহার করা হবে:
@Configuration
public class AppConfig {
@Bean
public MathOperations mathOperations() {
return new MathOperations();
}
@Bean
public String operationResult() {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("mathOperations", mathOperations()); // setting MathOperations object
// Call multiply method with parameters 5 and 10
Integer result = (Integer) parser.parseExpression("#mathOperations.multiply(5, 10)").getValue(context);
return "The result of multiplication is: " + result;
}
}
এখানে, multiply(5, 10) মেথড কল করা হয়েছে যেখানে 5 এবং 10 প্যারামিটার হিসেবে পাস করা হয়েছে। SpEL এক্সপ্রেশনটি MathOperations Bean-এ কল করা হয়েছে এবং এর ফলাফলকে রিটার্ন করা হয়েছে।
SpEL এর মাধ্যমে Bean মেথডে প্যারামিটার পাস করা
Spring Beans এ SpEL ব্যবহার করে প্যারামিটার পাস করার জন্য @Value অ্যানোটেশনও ব্যবহার করা যায়। এখানে একটি উদাহরণ দেওয়া হলো:
@Component
public class Employee {
private String name;
private double salary;
// Constructor
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
// Method to display employee details
public String displayEmployeeInfo(String prefix) {
return prefix + ": " + name + " with a salary of " + salary;
}
}
@Configuration
public class AppConfig {
@Bean
public Employee employee() {
return new Employee("John Doe", 70000);
}
@Bean
public String employeeInfo(@Value("#{employee.displayEmployeeInfo('Employee Info')}") String info) {
return info;
}
}
এখানে, @Value অ্যানোটেশন ব্যবহার করে SpEL দিয়ে displayEmployeeInfo মেথড কল করা হয়েছে এবং prefix প্যারামিটার হিসেবে 'Employee Info' পাস করা হয়েছে।
সারাংশ
Spring Expression Language (SpEL) ব্যবহার করে Spring Beans বা সাধারণ Java objects এর মেথড কল করা এবং প্যারামিটার পাস করা খুবই সহজ এবং শক্তিশালী। আপনি SpEL ব্যবহার করে #object.method() সিনট্যাক্স ব্যবহার করে মেথড কল করতে পারেন এবং () এর মধ্যে প্যারামিটার পাস করতে পারেন। এই প্রক্রিয়া Spring Framework-এ ডাইনামিক লজিক প্রয়োগের জন্য অত্যন্ত কার্যকরী এবং ফ্লেক্সিবল।