Spring Expression Language (SpEL) কী?
SpEL (Spring Expression Language) হল একটি শক্তিশালী এবং নমনীয় এক্সপ্রেশন ল্যাঙ্গুয়েজ যা Spring Framework এ ব্যবহৃত হয়। SpEL এর মাধ্যমে Spring Beans, মেথড, প্রপার্টি, এবং কন্ডিশনাল লজিককে এক্সপ্রেস করা যায়। এটি JavaBeans, প Collections, Arrays এবং ম্যাপের উপর কাজ করতে পারে। SpEL ব্যবহার করে Spring এর মধ্যে এক্সপ্রেশন ভিত্তিক কনফিগারেশন এবং কার্যাবলী সহজতর করা হয়।
SpEL এর কিছু সুবিধা:
- ডাইনামিক এক্সপ্রেশন ইভ্যালুয়েশন
- Spring Beans এবং তাদের প্রপার্টি এক্সপ্রেস করা
- মেথড কলে, কন্ডিশনাল লজিক এবং গাণিতিক অপারেশন করা
- সহজ এবং কার্যকরী কনফিগারেশন
SpEL ব্যবহার করার জন্য Spring প্রজেক্ট কনফিগার করা
1. Maven প্রকল্পে নির্ভরশীলতা যোগ করা
SpEL ব্যবহার করতে হলে, আপনাকে আপনার Spring প্রজেক্টে spring-expression নির্ভরশীলতা যোগ করতে হবে। যদি আপনার প্রকল্প Maven ব্যবহার করে, তাহলে pom.xml ফাইলে এই নির্ভরশীলতা যোগ করুন।
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.12</version> <!-- উপযুক্ত স্প্রিং সংস্করণ ব্যবহার করুন -->
</dependency>
</dependencies>
2. Spring Beans কনফিগারেশন
স্প্রিং কনফিগারেশনে SpEL ব্যবহার করতে হলে আপনি XML বা Java কনফিগারেশন পদ্ধতি ব্যবহার করতে পারেন। নিচে SpEL ব্যবহার করার জন্য একটি XML কনফিগারেশন উদাহরণ দেওয়া হলো।
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">
<!-- SpEL ব্যবহার করার জন্য Spring Bean -->
<bean id="messageService" class="com.example.MessageService">
<property name="message" value="Hello, Spring Expression Language!"/>
</bean>
<bean id="greeting" class="com.example.Greeting">
<property name="greetingMessage" value="#{messageService.message}"/>
</bean>
</beans>
3. Java কনফিগারেশন (Java Config) পদ্ধতি
স্প্রিং 3.0 থেকে XML কনফিগারেশনের পাশাপাশি Java Config ব্যবহার করা শুরু হয়েছে। Java Config কনফিগারেশনে SpEL ব্যবহারের একটি উদাহরণ নিচে দেওয়া হলো।
package com.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.annotation.Value;
@Configuration
public class AppConfig {
@Bean
public MessageService messageService() {
return new MessageService("Hello from SpEL!");
}
@Bean
public Greeting greeting() {
return new Greeting(messageService().getMessage());
}
}
4. SpEL ব্যবহার করে Beans কনফিগার করা
SpEL ব্যবহারের জন্য Spring Beans কনফিগারেশন ফাইলে বিভিন্ন প্রপার্টি বা ফাংশনালিটি ব্যবহার করা যেতে পারে। নিচে SpEL-এর সাধারণ ব্যবহারের উদাহরণ দেওয়া হলো।
উদাহরণ ১: প্রপার্টি সেট করা
<bean id="greeting" class="com.example.Greeting">
<property name="greetingMessage" value="#{'Hello ' + 'Spring' + ' Expression Language!'}"/>
</bean>
এই কোডটি SpEL ব্যবহার করে স্ট্রিং কন্ট্যাটিনেশন (concatenation) করবে এবং "Hello Spring Expression Language!" স্ট্রিংটিকে greetingMessage প্রপার্টিতে সেট করবে।
উদাহরণ ২: গাণিতিক অপারেশন
<bean id="calculation" class="com.example.Calculation">
<property name="sum" value="#{5 + 3}"/>
</bean>
এখানে SpEL গাণিতিক অপারেশন 5 + 3 ইভ্যালুয়েট করে, এবং ফলস্বরূপ sum প্রপার্টি ৮ হবে।
উদাহরণ ৩: মেথড কল করা
<bean id="messageService" class="com.example.MessageService">
<property name="message" value="Hello, SpEL!"/>
</bean>
<bean id="greeting" class="com.example.Greeting">
<property name="greetingMessage" value="#{messageService.getMessage()}"/>
</bean>
এখানে SpEL messageService.getMessage() মেথড কল করে তার রিটার্ন ভ্যালু greetingMessage প্রপার্টিতে সেট করবে।
5. SpEL কনসোল ব্যবহার করে এক্সপ্রেশন ইভ্যালুয়েট করা
Spring কনফিগারেশনে SpEL এক্সপ্রেশন ব্যবহার করতে হলে, স্প্রিং কনটেক্সট ইনিশিয়ালাইজ করার পরে, আপনি SpEL এক্সপ্রেশন কনসোল ব্যবহার করে এক্সপ্রেশন ইভ্যালুয়েট করতে পারেন।
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELExample {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
SpelExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
evaluationContext.setVariables(Map.of("name", "Spring"));
String result = parser.parseExpression("'Hello ' + #name").getValue(evaluationContext, String.class);
System.out.println(result); // Output: Hello Spring
}
}
এখানে #name ভেরিয়েবলটি SpEL কনটেক্সটের মাধ্যমে Spring ভ্যালু হিসাবে রেজিস্টার করা হয় এবং Hello Spring আউটপুট হয়।
সারাংশ
SpEL (Spring Expression Language) একটি শক্তিশালী এক্সপ্রেশন ল্যাঙ্গুয়েজ যা Spring Framework-এর মধ্যে কনফিগারেশন ও কার্যক্রমগুলোকে আরও লঘু এবং নমনীয় করে তোলে। SpEL এর মাধ্যমে Spring Beans এর প্রপার্টি, মেথড কল, গাণিতিক অপারেশন, এবং কন্ডিশনাল লজিক সহজেই এক্সপ্রেস করা যায়। SpEL ব্যবহার করতে Spring প্রজেক্টে spring-expression নির্ভরশীলতা যোগ করতে হয় এবং আপনি Spring XML বা Java কনফিগারেশন ব্যবহার করে SpEL কনফিগার করতে পারেন।
Read more