Spring Expression Language (SpEL), Spring ফ্রেমওয়ার্কের একটি শক্তিশালী এক্সপ্রেশন ল্যাঙ্গুয়েজ যা Spring Beans এবং তাদের মেথডের সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহার করা হয়। SpEL ব্যবহার করে Spring Beans-এর রেফারেন্স এবং তাদের মেথড কল করা যেতে পারে। এটি Spring কনটেক্সটের মধ্যে অবজেক্ট এবং তাদের মেথডের সাথে সহজে কাজ করার জন্য অত্যন্ত উপকারী।
Bean References in SpEL
SpEL এর মাধ্যমে Spring Bean রেফারেন্স অ্যাক্সেস করা এবং তাদের প্রপার্টি বা মেথড কল করা যেতে পারে। Spring কনটেক্সটের মধ্যে Bean রেফারেন্স ব্যবহার করতে SpEL-এ @beanName সিনট্যাক্স ব্যবহার করা হয়।
উদাহরণ:
ধরা যাক, আমাদের একটি Person ক্লাস এবং একটি GreetingService ক্লাস আছে, এবং আমাদের SpEL ব্যবহার করে এই Beans গুলির প্রপার্টি বা মেথডে অ্যাক্সেস করতে হবে।
1. Person Bean
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String greet() {
return "Hello, " + name;
}
}
2. GreetingService Bean
public class GreetingService {
public String getGreeting() {
return "Good Morning!";
}
}
3. Spring XML কনফিগারেশন
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="person" class="com.example.Person">
<constructor-arg value="John"/>
</bean>
<bean id="greetingService" class="com.example.GreetingService"/>
</beans>
Bean References with SpEL in Code
এখন, SpEL ব্যবহার করে Spring Beans অ্যাক্সেস এবং তাদের মেথড কল করা হবে।
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELBeanExample {
public static void main(String[] args) {
// Load Spring context from XML configuration
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// Get SpEL expression parser
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
// Register Spring beans for SpEL evaluation
evaluationContext.setVariable("person", context.getBean("person"));
evaluationContext.setVariable("greetingService", context.getBean("greetingService"));
// Accessing Bean property and method using SpEL
String greeting = parser.parseExpression("@person.name").getValue(evaluationContext, String.class);
System.out.println(greeting); // Output: John
String greetingMessage = parser.parseExpression("@person.greet()").getValue(evaluationContext, String.class);
System.out.println(greetingMessage); // Output: Hello, John
String morningGreeting = parser.parseExpression("@greetingService.getGreeting()").getValue(evaluationContext, String.class);
System.out.println(morningGreeting); // Output: Good Morning!
}
}
SpEL ব্যাখ্যা:
@person.name: SpEL-এ@চিহ্ন ব্যবহার করা হয় Bean রেফারেন্সের জন্য।@person.greet(): SpEL-এ Bean মেথড কল করার জন্য()ব্যবহার করা হয়।@greetingService.getGreeting(): SpEL-এgetGreeting()মেথড কল করা হয়েছেGreetingServiceBean-এর জন্য।
Method Invocation in SpEL
SpEL-এ Method Invocation খুবই সাধারণ এবং গুরুত্বপূর্ণ ফিচার। Bean মেথডের মধ্যে থেকে ডেটা রিটার্ন করার জন্য SpEL ব্যবহার করা যেতে পারে।
উদাহরণ:
ধরা যাক, আমাদের একটি MathService Bean আছে যার মধ্যে একটি add মেথড আছে যা দুইটি সংখ্যার যোগফল প্রদান করে।
1. MathService Bean
public class MathService {
public int add(int a, int b) {
return a + b;
}
}
2. Spring XML কনফিগারেশন
<bean id="mathService" class="com.example.MathService"/>
Method Invocation Using SpEL
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELMethodInvocationExample {
public static void main(String[] args) {
// Load Spring context from XML configuration
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
// Get SpEL expression parser
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
// Register Spring bean for SpEL evaluation
evaluationContext.setVariable("mathService", context.getBean("mathService"));
// Invoking the method 'add' in MathService using SpEL
int sum = parser.parseExpression("@mathService.add(10, 20)").getValue(evaluationContext, Integer.class);
System.out.println("Sum: " + sum); // Output: Sum: 30
}
}
SpEL ব্যাখ্যা:
@mathService.add(10, 20): SpEL-এaddমেথড কল করা হয়েছেMathServiceBean এর মাধ্যমে এবং এটি দুইটি আর্গুমেন্ট (10এবং20) গ্রহণ করছে।
উপসংহার
Spring Expression Language (SpEL) Spring Beans এবং তাদের মেথড অ্যাক্সেস করার জন্য একটি শক্তিশালী টুল। Bean References এবং Method Invocation ব্যবহার করে আমরা Spring Beans-এর প্রপার্টি এবং মেথডকে খুব সহজে স্পেল এক্সপ্রেশনগুলির মাধ্যমে অ্যাক্সেস করতে পারি। এটি Spring অ্যাপ্লিকেশনের মধ্যে ডাইনামিক এক্সপ্রেশন লেখার ক্ষমতা প্রদান করে, যা কোডকে আরও নমনীয় এবং ব্যবহারযোগ্য করে তোলে।
Read more