Spring Expression Language (SpEL) Spring Framework এর একটি শক্তিশালী উপাদান, যা Spring Boot অ্যাপ্লিকেশনগুলিতে ডাইনামিক এক্সপ্রেশন লেখার জন্য ব্যবহৃত হয়। SpEL ব্যবহার করে আপনি Spring Beans, প্রপার্টি, মেথড কল, কন্ডিশনাল লজিক এবং আরও অনেক কিছু কার্যকরভাবে পরিচালনা করতে পারেন।
Spring Boot-এ SpEL ব্যবহারের অনেক সুবিধা রয়েছে, যেমন প্রপার্টি ফাইলের মধ্যে SpEL এক্সপ্রেশন ব্যবহার করা, Spring Beans-এর সাথে এক্সপ্রেশন ম্যানিপুলেশন, এবং ডাইনামিক কনফিগারেশন ইত্যাদি।
Spring Boot এর মধ্যে SpEL ব্যবহার করার কিছু উদাহরণ
1. Spring Boot Application Properties-এ SpEL ব্যবহার
Spring Boot অ্যাপ্লিকেশনের application.properties বা application.yml ফাইলের মধ্যে SpEL এক্সপ্রেশন ব্যবহার করা যেতে পারে। এতে অ্যাপ্লিকেশনের প্রপার্টি ফাইলের ভ্যালু ডাইনামিকভাবে নির্ধারণ করা সম্ভব।
উদাহরণ: application.properties এ SpEL ব্যবহার
# Defining properties
app.name=Spring Boot Application
app.version=2.0
# Using SpEL to concatenate two properties
app.fullName=${app.name} - ${app.version}
এই উদাহরণে, ${app.name} - ${app.version} একটি SpEL এক্সপ্রেশন যা app.name এবং app.version এর মান একত্রিত করে। Spring Boot অ্যাপ্লিকেশন যখন চালানো হবে, তখন app.fullName এর মান হবে "Spring Boot Application - 2.0"।
2. SpEL ব্যবহার করে Bean Properties ম্যানিপুলেশন
Spring Boot অ্যাপ্লিকেশনগুলিতে, SpEL ব্যবহার করে Beans-এর প্রপার্টি ম্যানিপুলেশন খুব সহজ। আপনি Spring Bean এর প্রপার্টি বা মেথডকে SpEL এক্সপ্রেশন দ্বারা অ্যাক্সেস এবং ম্যানিপুলেট করতে পারেন।
উদাহরণ: Bean প্রপার্টি অ্যাক্সেস
ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে, যেখানে name এবং age প্রপার্টি রয়েছে।
public class Person {
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and Setter Methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String greet() {
return "Hello, " + name;
}
}
Spring Boot Bean কনফিগারেশন
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public Person person() {
return new Person("John", 25);
}
}
SpEL ব্যবহার করে Bean Properties অ্যাক্সেস করা
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
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) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// SpEL expression parser
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
// Accessing Bean property using SpEL
String name = parser.parseExpression("@person.name").getValue(evaluationContext, String.class);
System.out.println("Name: " + name); // Output: Name: John
// Calling method using SpEL
String greeting = parser.parseExpression("@person.greet()").getValue(evaluationContext, String.class);
System.out.println(greeting); // Output: Hello, John
}
}
এই উদাহরণে, @person.name এবং @person.greet() এর মাধ্যমে Person Bean-এর প্রপার্টি এবং মেথড অ্যাক্সেস করা হয়েছে।
3. Conditional Logic with SpEL in Spring Boot
SpEL ব্যবহার করে conditional expressions তৈরি করা যায়, যা Spring Beans এবং অন্যান্য অ্যাক্সেসযোগ্য ভ্যালুর ভিত্তিতে লজিকাল শর্ত প্রদান করতে পারে।
উদাহরণ: SpEL দিয়ে Conditional Expression
ধরা যাক, আমাদের একটি PriceService ক্লাস রয়েছে, যেখানে আমরা কোনও পণ্যের মূল্য অ্যাক্সেস করতে চাই, এবং SpEL ব্যবহার করে মূল্য শর্তসাপেক্ষভাবে পরিবর্তন করব।
public class PriceService {
public double calculateDiscountedPrice(double price, boolean isSale) {
if (isSale) {
return price * 0.9; // 10% discount during sale
}
return price; // No discount
}
}
Spring Bean কনফিগারেশন
@Configuration
public class AppConfig {
@Bean
public PriceService priceService() {
return new PriceService();
}
}
SpEL Conditional Expression
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELConditionalExample {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// SpEL expression parser
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
// Accessing the Bean
evaluationContext.setVariable("priceService", context.getBean("priceService"));
// Applying conditional SpEL expression to calculate price
double discountedPrice = parser.parseExpression("@priceService.calculateDiscountedPrice(100, true)").getValue(evaluationContext, Double.class);
System.out.println("Discounted Price: " + discountedPrice); // Output: Discounted Price: 90.0
}
}
এখানে, SpEL এক্সপ্রেশনটি calculateDiscountedPrice মেথডে পাস করা আর্গুমেন্টের ভিত্তিতে শর্তসাপেক্ষ মূল্য নির্ধারণ করেছে।
সারাংশ
Spring Boot-এ Spring Expression Language (SpEL) ব্যবহার করে আপনি ডাইনামিক এক্সপ্রেশন এবং কনফিগারেশন করতে পারেন। এটি Spring Beans-এর প্রপার্টি অ্যাক্সেস, মেথড কল, কন্ডিশনাল লজিক, এবং অন্যান্য এক্সপ্রেশন সমর্থন করে যা অ্যাপ্লিকেশনকে আরও নমনীয় ও শক্তিশালী করে তোলে। SpEL ব্যবহার করে Spring Boot অ্যাপ্লিকেশনগুলির মধ্যে বিভিন্ন ধরনের কনফিগারেশন এবং এক্সপ্রেশন ম্যানিপুলেশন করতে পারেন, যা ডেভেলপমেন্ট প্রক্রিয়া অনেক সহজ এবং দ্রুত করে তোলে।
Read more