Spring Expression Language (SpEL) হল একটি শক্তিশালী এক্সপ্রেশন ল্যাঙ্গুয়েজ যা স্প্রিং ফ্রেমওয়ার্কের মধ্যে ব্যবহৃত হয়। এটি ডাইনামিক এক্সপ্রেশন, কন্ডিশনাল লজিক এবং বিং-লেভেল ডেটা এক্সপ্রেশন পরিচালনা করতে সাহায্য করে। SpEL স্প্রিং কনফিগারেশন ফাইলের মধ্যে, ডোমেইন অবজেক্টের প্রপার্টি অ্যাক্সেস এবং আরও অনেক কিছু পরিচালনা করতে ব্যবহৃত হয়। SpEL অ্যাপ্লিকেশনের মধ্যে ডাইনামিক এক্সপ্রেশন মূল্যায়ন করতে সক্ষম, যেমন ফিল্টারিং, গণনা বা লজিকাল অপারেশন করা।
এই টিউটোরিয়ালে আমরা শিখব কীভাবে SpEL পরিবেশ (Environment) সেটআপ করতে হয়।
SpEL Environment সেটআপ
1. SpEL এর জন্য ডিপেন্ডেন্সি সংযোজন
SpEL ব্যবহারের জন্য, যদি আপনি স্প্রিং বুট ব্যবহার করেন, তবে আপনাকে আলাদাভাবে কোনও ডিপেন্ডেন্সি যোগ করতে হবে না, কারণ এটি স্প্রিং বুট স্টার্টার এ অন্তর্ভুক্ত থাকে। তবে যদি আপনি স্প্রিং ফ্রেমওয়ার্ক ব্যবহার করছেন, তবে আপনাকে স্প্রিং কোর লাইব্রেরি অন্তর্ভুক্ত করতে হবে।
Maven ব্যবহার করলে pom.xml এ নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.x.x</version>
</dependency>
</dependencies>
2. SpEL কনফিগারেশন তৈরি করা
SpEL ব্যবহার করার জন্য StandardEvaluationContext এবং ExpressionParser ব্যবহার করতে হবে। StandardEvaluationContext হলো SpEL এর জন্য কনফিগারেশন বা পরিবেশ সেটআপ করার জন্য একটি কনটেক্সট, যেখানে আপনি সমস্ত ভ্যারিয়েবল এবং ফাংশন রেজিস্টার করতে পারবেন। ExpressionParser ব্যবহার করা হয় এক্সপ্রেশন মূল্যায়ন করার জন্য।
SpEL Environment কনফিগারেশন উদাহরণ
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELExample {
public static void main(String[] args) {
// SpEL কনফিগারেশন তৈরি
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// Context এ ভ্যারিয়েবল সংযোগ
context.setVariable("name", "John Doe");
context.setVariable("age", 30);
// SpEL এক্সপ্রেশন পার্স করা
String expression = "#name + ' is ' + #age + ' years old.'";
String result = parser.parseExpression(expression).getValue(context, String.class);
// আউটপুট প্রিন্ট করা
System.out.println(result);
}
}
এখানে, আমরা SpEL কনফিগারেশন তৈরি করেছি এবং name এবং age ভ্যারিয়েবলগুলো কনটেক্সটে রেজিস্টার করেছি। পরবর্তীতে SpEL এক্সপ্রেশন ব্যবহার করে এই ভ্যারিয়েবলগুলো এক্সপ্রেস করা হয়েছে এবং John Doe is 30 years old. আউটপুট পাওয়া যাবে।
3. SpEL এক্সপ্রেশন ব্যবহার
স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজে আপনি বিভিন্ন ধরণের এক্সপ্রেশন ব্যবহার করতে পারেন:
- অ্যারিথমেটিক অপারেশন: যোগ, বিয়োগ, গুণ, ভাগ ইত্যাদি
- লজিক্যাল অপারেশন:
and,or,not - টেক্সট এক্সপ্রেশন: স্ট্রিং কনক্যাটিনেশন বা স্ট্রিং অপারেশন
- কন্ডিশনাল এক্সপ্রেশন:
ifএবংternaryঅপারেটর
উদাহরণ: SpEL এর কিছু কমন এক্সপ্রেশন
// 1. অ্যারিথমেটিক অপারেশন
String expr1 = "10 + 20 * 3"; // ফলাফল: 70
int result1 = parser.parseExpression(expr1).getValue(context, Integer.class);
System.out.println(result1);
// 2. লজিক্যাল অপারেশন
String expr2 = "#age > 18 and #name == 'John Doe'"; // ফলাফল: true
boolean result2 = parser.parseExpression(expr2).getValue(context, Boolean.class);
System.out.println(result2);
// 3. টেক্সট এক্সপ্রেশন
String expr3 = "'Hello, ' + #name"; // ফলাফল: "Hello, John Doe"
String result3 = parser.parseExpression(expr3).getValue(context, String.class);
System.out.println(result3);
// 4. কন্ডিশনাল এক্সপ্রেশন
String expr4 = "#age > 18 ? 'Adult' : 'Minor'"; // ফলাফল: "Adult"
String result4 = parser.parseExpression(expr4).getValue(context, String.class);
System.out.println(result4);
4. SpEL Context এ ফাংশন যোগ করা
SpEL ব্যবহার করার সময় আপনি নিজের কাস্টম ফাংশনও যুক্ত করতে পারেন। এই ফাংশনগুলো StandardEvaluationContext-এ রেজিস্টার করা হয়।
উদাহরণ: কাস্টম ফাংশন রেজিস্টার করা
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELFunctionExample {
public static void main(String[] args) {
// SpEL কনফিগারেশন তৈরি
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// কাস্টম ফাংশন রেজিস্টার করা
context.setVariable("multiply", new MultiplyFunction());
// SpEL এক্সপ্রেশন ব্যবহার করা
String expression = "#multiply.multiply(10, 5)";
int result = parser.parseExpression(expression).getValue(context, Integer.class);
System.out.println("Result: " + result); // ফলাফল: 50
}
}
class MultiplyFunction {
public int multiply(int a, int b) {
return a * b;
}
}
এখানে, আমরা একটি কাস্টম multiply ফাংশন তৈরি করেছি এবং সেটি SpEL কনটেক্সটে রেজিস্টার করেছি, পরে SpEL এক্সপ্রেশন ব্যবহার করে এই ফাংশনটি কল করেছি।
সারাংশ
SpEL (Spring Expression Language) একটি শক্তিশালী এক্সপ্রেশন ল্যাঙ্গুয়েজ যা স্প্রিং অ্যাপ্লিকেশনগুলিতে ডাইনামিক এক্সপ্রেশন, কন্ডিশনাল লজিক এবং অন্যান্য অপারেশন সহজে বাস্তবায়ন করতে সহায়তা করে। SpEL এর পরিবেশ (Environment) সেটআপ করার জন্য ExpressionParser এবং StandardEvaluationContext ব্যবহার করা হয়। এটি বিভিন্ন ধরনের অপারেশন যেমন অ্যারিথমেটিক, লজিক্যাল, কন্ডিশনাল এবং কাস্টম ফাংশন ব্যবহারের সুযোগ প্রদান করে। SpEL ব্যবহারের মাধ্যমে স্প্রিং অ্যাপ্লিকেশনে আরও ডাইনামিক ও কাস্টমাইজড কার্যক্ষমতা আনা যায়।
Spring Expression Language (SpEL) হলো একটি শক্তিশালী ভাষা যা Spring Framework-এর মধ্যে ব্যবহৃত হয়। এটি Spring এর বিভিন্ন ফিচার যেমন Beans, Collections, এবং ইন্টারনাল অ্যাপ্লিকেশন লজিকের সাথে এক্সপ্রেশন এবং ভ্যালু ম্যানিপুলেট করতে ব্যবহৃত হয়। SpEL আপনাকে Spring beans এর প্রপার্টি, মেথড, এবং অরগানাইজেশনাল লজিকের উপর এক্সপ্রেশন লিখতে সহায়ক।
Spring Framework এবং SpEL এর ডিপেনডেন্সি
Spring Framework ব্যবহার করার জন্য সাধারণত Spring Core ডিপেনডেন্সি প্রয়োজন হয়। SpEL বিশেষভাবে Spring Expression Language লাইব্রেরির মাধ্যমে ব্যবহৃত হয়। Spring-এ SpEL-এর ফিচারগুলো ব্যবহারের জন্য spring-expression প্যাকেজটি প্রয়োজন।
১. Spring Framework-এর ডিপেনডেন্সি
Spring Framework ব্যবহার করার জন্য প্রথমে Maven বা Gradle কনফিগারেশনে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে।
Maven ব্যবহারকারী জন্য ডিপেনডেন্সি:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.x</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.x</version>
</dependency>
Gradle ব্যবহারকারী জন্য ডিপেনডেন্সি:
dependencies {
implementation 'org.springframework:spring-context:5.3.x'
implementation 'org.springframework:spring-expression:5.3.x'
}
এই ডিপেনডেন্সিগুলি Spring-এর প্রয়োজনীয় ফিচার যেমন Bean Management, Context Handling এবং SpEL এর কার্যকারিতা ব্যবহারের জন্য অত্যন্ত গুরুত্বপূর্ণ।
২. SpEL এর জন্য প্রয়োজনীয় ডিপেনডেন্সি
Spring Expression Language (SpEL) মূলত spring-expression প্যাকেজে অন্তর্ভুক্ত থাকে। এটি Spring Context মডিউলের অংশ, এবং সাধারণত আলাদা করে ইনস্টল করতে হয় না। তবে, যদি আপনি শুধুমাত্র SpEL-এর জন্য ডিপেনডেন্সি ব্যবহার করতে চান, তবে spring-expression লাইব্রেরি যথেষ্ট।
SpEL এর সুবিধা
SpEL এর সাহায্যে Spring Beans-এর মধ্যে বিভিন্ন ধরণের এক্সপ্রেশন লিখে আপনি ডায়নামিক কনফিগারেশন, কন্ডিশনাল এক্সপ্রেশন, মেথড কল, এবং কোলেকশন ম্যানিপুলেশন করতে পারেন। এর মাধ্যমে আপনি Spring Beans এর সাথে আরও ফ্লেক্সিবিলিটি নিয়ে কাজ করতে পারবেন।
উদাহরণ: Spring Beans-এ SpEL ব্যবহার
Spring Beans-এর মধ্যে SpEL ব্যবহার করা হয় ডাইনামিক ভ্যালু অ্যাসাইন করার জন্য, যেমন কোনো Bean-এর প্রপার্টি সেট করা, অথবা কোনো মেথড কল করা। উদাহরণ:
@Component
public class Employee {
private String name;
private int age;
// Getters and Setters
}
@Configuration
public class AppConfig {
@Bean
public Employee employee() {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("name", "John");
context.setVariable("age", 30);
// Use SpEL to inject properties
String name = (String) parser.parseExpression("#name").getValue(context);
int age = (int) parser.parseExpression("#age").getValue(context);
Employee employee = new Employee();
employee.setName(name);
employee.setAge(age);
return employee;
}
}
এই উদাহরণে, SpEL ব্যবহার করে আমরা name এবং age ভ্যালুগুলি Spring Beans-এ প্রোগ্রাম্যাটিকভাবে সেট করছি। Spring-এ SpEL সাধারণত Beans-এর প্রপার্টি সেট করার জন্য বা কাস্টম লজিক প্রয়োগ করার জন্য ব্যবহৃত হয়।
SpEL এর ব্যবহার
- Bean Definition এর মাধ্যমে
Spring Beans-এর ডিফিনিশনে SpEL ব্যবহার করে প্রপার্টি নির্ধারণ করা হয়।
<bean id="employee" class="com.example.Employee">
<property name="name" value="#{systemProperties['user.name']}"/>
<property name="age" value="#{23 + 7}"/>
</bean>
- @Value অ্যানোটেশন এর মাধ্যমে
Spring-এর@Valueঅ্যানোটেশন ব্যবহার করে SpEL-এর এক্সপ্রেশন ইনজেক্ট করা হয়।
@Component
public class Employee {
@Value("#{systemProperties['user.name']}")
private String name;
@Value("#{23 + 7}")
private int age;
// Getters and Setters
}
সারাংশ
Spring Framework এবং SpEL-এর ডিপেনডেন্সি ব্যবহারের মাধ্যমে ডাইনামিক এক্সপ্রেশন, কনফিগারেশন এবং মেথড কল সহজে বাস্তবায়ন করা সম্ভব। Maven বা Gradle এর মাধ্যমে SpEL সম্পর্কিত ডিপেনডেন্সি সংযুক্ত করে আপনি SpEL-এর শক্তিশালী ফিচারগুলি আপনার Spring অ্যাপ্লিকেশনে ব্যবহার করতে পারেন। SpEL-এর মাধ্যমে আপনি Beans-এর প্রপার্টি ম্যানিপুলেশন, কাস্টম এক্সপ্রেশন এবং ডাইনামিক লজিক বাস্তবায়ন করতে পারবেন যা Spring অ্যাপ্লিকেশনকে আরও ফ্লেক্সিবল এবং শক্তিশালী করে তোলে।
Spring Expression Language (SpEL) হল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা স্প্রিং ফ্রেমওয়ার্কে ডাইনামিক এক্সপ্রেশন মূল্যায়ন করতে ব্যবহৃত হয়। SpEL আপনাকে এলাকা (property) মান, মেথড কল, অপারেটর এবং ফাংশন ব্যবহার করে কোডে লজিক যোগ করার সুবিধা দেয়। SpEL স্প্রিং কনফিগারেশন, বিয়ান ডিফিনিশন, এবং অন্যান্য স্প্রিং ফিচারগুলোর মধ্যে ব্যবহৃত হয়।
এখানে দেখানো হবে কিভাবে Maven বা Gradle দিয়ে একটি Spring প্রজেক্ট তৈরি করে SpEL ব্যবহার করা যায়।
Maven দিয়ে Spring প্রজেক্ট তৈরি করা
Maven একটি জনপ্রিয় বিল্ড টুল যা ডিপেনডেন্সি ম্যানেজমেন্ট এবং প্রজেক্ট কনফিগারেশন সহজ করে। Spring প্রজেক্ট তৈরি করার জন্য Maven ব্যবহার করতে হলে, আপনাকে কিছু নির্দিষ্ট ডিপেনডেন্সি এবং কনফিগারেশন করতে হবে।
Step 1: pom.xml কনফিগারেশন
Spring এবং SpEL ব্যবহার করার জন্য 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> <!-- SpEL লাইব্রেরির সংস্করণ -->
</dependency>
<!-- অন্য প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন -->
</dependencies>
Step 2: Spring Configuration এবং SpEL উদাহরণ
স্প্রিং কনফিগারেশন ফাইলে SpEL ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হল যেখানে SpEL এর মাধ্যমে একটি প্যারামিটার সেট করা হচ্ছে।
<bean id="message" class="java.lang.String">
<constructor-arg value="#{'Hello ' + 'World'}"/>
</bean>
এখানে, SpEL এক্সপ্রেশন #{'Hello ' + 'World'} একটি কনক্যাটিনেশন তৈরি করবে এবং message বিয়ানকে "Hello World" মানে সেট করবে।
Step 3: Java কোডে SpEL ব্যবহার করা
SpEL এক্সপ্রেশন ব্যবহার করার জন্য Spring এর ExpressionParser এবং StandardEvaluationContext ক্লাস ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেওয়া হল:
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELExample {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// SpEL এক্সপ্রেশন
String result = parser.parseExpression("'Hello ' + 'SpEL'").getValue(context, String.class);
System.out.println(result); // Output: Hello SpEL
}
}
এখানে SpEL এক্সপ্রেশন 'Hello ' + 'SpEL' পার্স এবং ইভ্যালুয়েট করা হচ্ছে, এবং এটি "Hello SpEL" আউটপুট দিবে।
Gradle দিয়ে Spring প্রজেক্ট তৈরি করা
Gradle একটি শক্তিশালী বিল্ড টুল যা Maven এর চেয়ে আরও বেশি কাস্টমাইজেশন এবং দ্রুত বিল্ড টাইম অফার করে। Gradle ব্যবহার করে Spring প্রজেক্ট তৈরি করতে হলে, আপনাকে কিছু নির্দিষ্ট কনফিগারেশন করতে হবে।
Step 1: build.gradle কনফিগারেশন
Spring এবং SpEL ব্যবহার করার জন্য Gradle প্রজেক্টে প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করতে হবে। নিচে একটি উদাহরণ দেওয়া হল।
plugins {
id 'org.springframework.boot' version '2.5.4'
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework:spring-context:5.3.12'
implementation 'org.springframework:spring-expression:5.3.12'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Step 2: Spring Configuration এবং SpEL উদাহরণ
Spring এর কনফিগারেশন ফাইলে SpEL ব্যবহার করা যাবে যেমন Maven উদাহরণে দেখানো হয়েছে:
<bean id="message" class="java.lang.String">
<constructor-arg value="#{'Hello ' + 'World'}"/>
</bean>
Step 3: Java কোডে SpEL ব্যবহার করা
Gradle প্রজেক্টে SpEL ব্যবহার করতে, একইভাবে ExpressionParser এবং StandardEvaluationContext ব্যবহার করা হয়:
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELExample {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// SpEL এক্সপ্রেশন
String result = parser.parseExpression("'Hello ' + 'SpEL'").getValue(context, String.class);
System.out.println(result); // Output: Hello SpEL
}
}
Spring Expression Language (SpEL) ব্যবহার করার সুবিধা
- ডাইনামিক এক্সপ্রেশন: SpEL এক্সপ্রেশনগুলির মাধ্যমে কোডের মধ্যে ডাইনামিক লজিক তৈরি করা সম্ভব।
- মেথড কল: SpEL ব্যবহার করে স্প্রিং বিয়ান মেথড কল করা যায়।
- কন্ডিশনাল এক্সপ্রেশন: SpEL দিয়ে কন্ডিশনাল এক্সপ্রেশন তৈরি করা সম্ভব, যেমন if-else বা ternary অপারেটর।
- কোড সহজ করা: SpEL ব্যবহার করে কোডের লজিক বা কনফিগারেশন সহজ করা যায়, বিশেষত Spring Framework এর কনফিগারেশন ফাইলগুলোতে।
Spring Expression Language (SpEL) দিয়ে স্প্রিং প্রজেক্ট তৈরি করতে Maven বা Gradle ব্যবহার করে ডিপেনডেন্সি কনফিগার করা হয়, এবং তারপর Java কোডে SpEL ব্যবহার করা হয়। এইভাবে আপনি স্প্রিং কনফিগারেশন, বিয়ান ডিফিনিশন, বা অন্যান্য স্প্রিং ফিচারগুলির মধ্যে ডাইনামিক এক্সপ্রেশন মূল্যায়ন করতে পারেন।
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 কনফিগার করতে পারেন।
SpEL এর ধারণা
Spring Expression Language (SpEL) একটি শক্তিশালী এক্সপ্রেশন ল্যাঙ্গুয়েজ যা Spring Framework-এ ব্যবহৃত হয়। এটি Spring Bean কনফিগারেশন, স্প্রিং অ্যাপ্লিকেশনের মধ্যে ডাইনামিক এক্সপ্রেশন মূল্যায়ন এবং অন্যান্য কাজের জন্য ব্যবহৃত হয়। SpEL এর মাধ্যমে, ডেভেলপাররা জাভা অবজেক্টের প্রপার্টি, মেথড কল, কন্ডিশনাল স্টেটমেন্ট এবং আরও অনেক কিছু এক্সপ্রেশন আকারে ব্যবহার করতে পারে।
SpEL বিভিন্ন ব্যবহারিক ক্ষেত্রে প্রয়োগ করা যায়, যেমন Spring Bean কনফিগারেশন, কন্ডিশনাল লজিক, এবং অ্যানোটেশন ভিত্তিক কনফিগারেশন।
SpEL এর মৌলিক সিনট্যাক্স
SpEL সাধারণত স্প্রিং কনফিগারেশন ফাইলের মধ্যে ${} চিহ্নের মধ্যে ব্যবহৃত হয়। এটি ব্যবহার করে ডাইনামিক এক্সপ্রেশন সন্নিবেশ করা হয়, যা runtime এ মূল্যায়িত হয়।
মৌলিক সিনট্যাক্স উদাহরণ:
<bean id="message" class="java.lang.String">
<constructor-arg value="#{'Hello ' + 'World'}"/>
</bean>
এখানে, SpEL এক্সপ্রেশন #{'Hello ' + 'World'} ব্যবহৃত হয়েছে।
প্রথম SpEL প্রোগ্রাম
SpEL ব্যবহার করার জন্য সাধারণত ExpressionParser এবং Expression ক্লাস ব্যবহার করা হয়।
উদাহরণ: SpEL প্রোগ্রাম
এখানে একটি সরল SpEL প্রোগ্রামের উদাহরণ দেওয়া হল যেখানে SpEL এর মাধ্যমে স্ট্রিং কনক্যাটেনেশন (concatenation) করা হবে এবং একটি গণনা করা হবে।
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELExample {
public static void main(String[] args) {
// SpEL এক্সপ্রেশন পার্সার তৈরি
ExpressionParser parser = new SpelExpressionParser();
// Context তৈরি (যেখানে এক্সপ্রেশন কনটেক্সট থাকবে)
StandardEvaluationContext context = new StandardEvaluationContext();
// SpEL এক্সপ্রেশন ব্যবহার করে স্ট্রিং কনক্যাটেনেশন
String result = parser.parseExpression("'Hello ' + 'World'").getValue(context, String.class);
System.out.println(result); // আউটপুট: Hello World
// SpEL এক্সপ্রেশন ব্যবহার করে একটি গাণিতিক গণনা
int sum = parser.parseExpression("10 + 20").getValue(context, Integer.class);
System.out.println("Sum: " + sum); // আউটপুট: Sum: 30
}
}
কোডের ব্যাখ্যা:
- ExpressionParser: SpEL এক্সপ্রেশন পার্স করতে এটি ব্যবহৃত হয়। এখানে
SpelExpressionParserব্যবহার করা হয়েছে। - StandardEvaluationContext: এটি SpEL এক্সপ্রেশনকে মূল্যায়ন করার জন্য ব্যবহৃত হয় এবং context তৈরি করে।
- parseExpression(): এই মেথডটি SpEL এক্সপ্রেশন পার্স করে, এবং
getValue()মেথডের মাধ্যমে এক্সপ্রেশন এর ফলাফল পাওয়া যায়।
এই উদাহরণে, দুটি SpEL এক্সপ্রেশন পার্স করা হয়েছে:
- একটি স্ট্রিং কনক্যাটেনেশন (
'Hello ' + 'World'), যার আউটপুট হবে `"Hello World"। - একটি গাণিতিক গণনা (
10 + 20), যার আউটপুট হবে30।
SpEL এর অন্যান্য বৈশিষ্ট্য
কন্ডিশনাল এক্সপ্রেশন: SpEL ব্যবহার করে কন্ডিশনাল স্টেটমেন্টও ব্যবহার করা যায়, যেমন
ifবাternaryঅপারেটর।String result = parser.parseExpression("10 > 5 ? 'Greater' : 'Lesser'").getValue(context, String.class);বিন্যস্ত প্রপার্টি এক্সপ্রেশন: SpEL এর মাধ্যমে অবজেক্টের প্রপার্টি অ্যাক্সেসও করা যায়।
class Person { private String name; public String getName() { return name; } } // SpEL দিয়ে Person অবজেক্টের নাম প্রপার্টি অ্যাক্সেস String name = parser.parseExpression("person.name").getValue(context, String.class);মেথড কল: SpEL দিয়ে অবজেক্টের মেথড কল করা যায়।
String result = parser.parseExpression("'Hello'.concat(' World')").getValue(context, String.class);
সারাংশ
Spring Expression Language (SpEL) Spring Framework-এ একটি শক্তিশালী টুল যা ডাইনামিক এক্সপ্রেশন ব্যবহার করতে সাহায্য করে। এটি Spring Bean কনফিগারেশন, কন্ডিশনাল লজিক এবং অন্যান্য কাজের জন্য ব্যবহৃত হয়। SpEL ব্যবহার করে বিভিন্ন এক্সপ্রেশন যেমন গাণিতিক গণনা, স্ট্রিং কনক্যাটেনেশন, মেথড কল ইত্যাদি খুব সহজে করা যায়। উপরের উদাহরণে SpEL-এর মাধ্যমে স্ট্রিং কনক্যাটেনেশন এবং গাণিতিক গণনা দেখানো হয়েছে।
Read more