Spring Expression Language (SpEL) একটি শক্তিশালী ভাষা যা স্প্রিং কনফিগারেশন ফাইল বা কোডে এক্সপ্রেশন এবং ডাইনামিক লজিক ব্যবহার করতে সাহায্য করে। SpEL দিয়ে আপনি Spring Beans-এর মেথড কল করতে পারেন, ডাইনামিক্যালি প্যারামিটার পাস করতে পারেন, এবং মেথড রিটার্ন ভ্যালু গ্রহণ করতে পারেন।
এখানে SpEL ব্যবহার করে মেথড কল করার উদাহরণ দেখানো হবে।
Maven বা Gradle কনফিগারেশন
SpEL ব্যবহার করতে হলে প্রথমে Maven বা Gradle প্রজেক্টের মধ্যে Spring Context এবং Spring Expression লাইব্রেরি যোগ করতে হবে।
Maven কনফিগারেশন
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.12</version>
</dependency>
</dependencies>
Gradle কনফিগারেশন
dependencies {
implementation 'org.springframework:spring-context:5.3.12'
implementation 'org.springframework:spring-expression:5.3.12'
}
Method Invocation with SpEL
SpEL এর মাধ্যমে আপনি Spring Beans-এর মেথড কল করতে পারেন। এই কাজের জন্য # সাইন এবং Bean নাম ব্যবহার করা হয়, এবং মেথড নামসহ প্যারামিটার পাঠানো হয়।
Step 1: Spring Bean তৈরি করা
প্রথমে একটি Spring Bean ক্লাস তৈরি করতে হবে, যার মধ্যে মেথড থাকবে।
public class GreetingService {
public String greet(String name) {
return "Hello, " + name + "!";
}
public String greetMultipleNames(String name1, String name2) {
return "Hello, " + name1 + " and " + name2 + "!";
}
}
এখানে greet এবং greetMultipleNames নামক দুটি মেথড রয়েছে, যেগুলি স্প্রিং কনটেক্সটের মধ্যে SpEL দ্বারা কল করা যাবে।
Step 2: Spring কনফিগারেশন ফাইলে SpEL Method Invocation
Spring XML কনফিগারেশন ফাইলে SpEL ব্যবহার করে মেথড কল করা যেতে পারে। উদাহরণস্বরূপ:
<bean id="greetingService" class="com.example.GreetingService" />
<bean id="messageBean" class="java.lang.String">
<constructor-arg value="#{greetingService.greet('John')}"/>
</bean>
<bean id="messageBeanMultiple" class="java.lang.String">
<constructor-arg value="#{greetingService.greetMultipleNames('John', 'Jane')}"/>
</bean>
এখানে, greetingService.greet('John') SpEL এক্সপ্রেশনটি GreetingService ক্লাসের greet মেথড কল করছে এবং "John" প্যারামিটার পাঠাচ্ছে। এছাড়া, greetMultipleNames মেথডটি দুইটি প্যারামিটার গ্রহণ করছে ('John' এবং 'Jane')।
Step 3: Java কোডে SpEL Method Invocation
Java কোডের মধ্যে SpEL ব্যবহার করার জন্য ExpressionParser এবং StandardEvaluationContext ব্যবহার করতে হবে।
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) {
// Create Spring Bean
GreetingService greetingService = new GreetingService();
// Create ExpressionParser and StandardEvaluationContext
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// Set the greetingService bean in the context
context.setVariable("greetingService", greetingService);
// Call the 'greet' method using SpEL
String result1 = parser.parseExpression("#greetingService.greet('John')").getValue(context, String.class);
System.out.println(result1); // Output: Hello, John!
// Call the 'greetMultipleNames' method using SpEL
String result2 = parser.parseExpression("#greetingService.greetMultipleNames('John', 'Jane')").getValue(context, String.class);
System.out.println(result2); // Output: Hello, John and Jane!
}
}
এখানে, #greetingService.greet('John') SpEL এক্সপ্রেশন greetingService বিয়ানটির greet মেথড কল করছে এবং John প্যারামিটার পাঠাচ্ছে।
SpEL Method Invocation এর সুবিধা
- ডাইনামিক এক্সপ্রেশন: SpEL দিয়ে runtime এ মেথড কল করতে পারবেন এবং এক্সপ্রেশন অনুযায়ী প্যারামিটার এবং ফলাফল পরিবর্তন করতে পারবেন।
- কোড কনফিগারেশনে মেথড কল: স্প্রিং কনফিগারেশন ফাইলে (XML বা Java-based) সরাসরি SpEL ব্যবহার করে মেথড কল করতে পারবেন।
- মেথড রিটার্ন ভ্যালু: SpEL এর মাধ্যমে আপনি মেথডের রিটার্ন ভ্যালু গ্রহণ করতে পারবেন এবং সেটি অন্য কোন প্রসেসিং বা কনফিগারেশনে ব্যবহার করতে পারবেন।
সারাংশ
Spring Expression Language (SpEL) এর মাধ্যমে Spring Beans এর মেথড কল করা অনেক সহজ এবং শক্তিশালী। আপনি XML কনফিগারেশন বা Java কোডের মাধ্যমে SpEL এক্সপ্রেশন ব্যবহার করে Spring Beans এর মেথড কল করতে পারেন, এবং ডাইনামিকভাবে প্যারামিটার প্রদান করে সেগুলির রিটার্ন ভ্যালু গ্রহণ করতে পারেন। SpEL একটি খুবই শক্তিশালী টুল যা স্প্রিং অ্যাপ্লিকেশনগুলিতে ডাইনামিক এবং কাস্টম লজিক যোগ করতে সাহায্য করে।