Spring Boot এবং Spring Expression Language (SpEL) এর ইন্টিগ্রেশন একটি শক্তিশালী পদ্ধতি, যা Spring Boot অ্যাপ্লিকেশনে ডাইনামিক কনফিগারেশন, ডেটা প্রসেসিং এবং অন্যান্য অপারেশন সহজে সম্পাদন করতে সহায়ক। SpEL-কে Spring Boot-এ কার্যকরীভাবে ব্যবহার করতে, আপনি @Value, @Bean, @ConfigurationProperties সহ অনেক Spring Annotations এর মাধ্যমে SpEL এক্সপ্রেশনগুলি ইনজেক্ট এবং কার্যকর করতে পারেন।
এখানে, আমরা একটি Spring Boot অ্যাপ্লিকেশন তৈরি করব যেখানে SpEL এর সাথে ইন্টিগ্রেশন দেখানো হবে এবং কীভাবে SpEL ব্যবহার করে ডাইনামিকভাবে মান ইনজেক্ট করা যায় তা উদাহরণসহ ব্যাখ্যা করা হবে।
Spring Boot এবং SpEL ইন্টিগ্রেশন
১. Spring Boot প্রকল্প তৈরি করা
প্রথমে, Spring Initializr (https://start.spring.io/) ব্যবহার করে একটি Spring Boot প্রকল্প তৈরি করুন। নিচে কয়েকটি প্রাথমিক ডিপেন্ডেন্সি দেওয়া হলো:
- Spring Web: REST API তৈরি করার জন্য
- Spring Boot DevTools: ডেভেলপমেন্টে সাহায্য করার জন্য
- Spring Configuration Processor: কনফিগারেশন প্রপার্টির জন্য
এছাড়া Maven বা Gradle ডিপেন্ডেন্সি ফাইলের মাধ্যমে প্রয়োজনীয় লাইব্রেরিগুলো যোগ করা হবে।
২. Maven ডিপেন্ডেন্সি যোগ করা
pom.xml ফাইলে নিচের ডিপেন্ডেন্সি যোগ করুন:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
এটি Spring Boot অ্যাপ্লিকেশন তৈরি করতে সাহায্য করবে।
৩. SpEL ব্যবহার করে @Value Annotation
SpEL এক্সপ্রেশন ব্যবহার করে Spring Boot অ্যাপ্লিকেশনে ডাইনামিক মান Inject করার জন্য @Value Annotation ব্যবহার করা হয়। নিচে একটি উদাহরণ দেখানো হলো।
উদাহরণ ১: @Value এবং SpEL ব্যবহার
package com.example.spel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class SpelApplication {
public static void main(String[] args) {
SpringApplication.run(SpelApplication.class, args);
}
@Bean
public CommandLineRunner run(@Value("#{20 * 5}") int result) {
return args -> {
System.out.println("SpEL Calculation Result: " + result); // Output: 100
};
}
}
এখানে:
@Value("#{20 * 5}")SpEL এক্সপ্রেশন ব্যবহার করেresultফিল্ডে ২০ * ৫ এর মান (১০০) Inject করা হয়েছে।CommandLineRunnerBean ব্যবহার করে Spring Boot অ্যাপ্লিকেশন রান হওয়ার পর SpEL এর মাধ্যমে ইনজেক্ট করা মান প্রিন্ট করা হচ্ছে।
স্পষ্টীকরণ:
- SpEL এর মাধ্যমে
20 * 5গাণিতিক অপারেশন করা হচ্ছে এবং সেই মানresultফিল্ডে Inject হচ্ছে।
৪. SpEL ব্যবহার করে কনফিগারেশন ফাইল থেকে মান Inject করা
Spring Boot অ্যাপ্লিকেশনে SpEL ব্যবহার করে কনফিগারেশন ফাইল থেকে মান Inject করা যেতে পারে।
উদাহরণ ২: application.properties ফাইল ব্যবহার
product.price=200
product.discount=0.1
এখন, এই প্রপার্টি ফাইল থেকে SpEL ব্যবহার করে ডাইনামিকভাবে মান ইনজেক্ট করা যাবে।
package com.example.spel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpelApplication {
public static void main(String[] args) {
SpringApplication.run(SpelApplication.class, args);
}
@Bean
public CommandLineRunner run(@Value("${product.price}") double price,
@Value("#{${product.price} * ${product.discount}}") double discount) {
return args -> {
System.out.println("Product Price: " + price); // Output: 200.0
System.out.println("Discounted Price: " + discount); // Output: 20.0
};
}
}
এখানে:
@Value("${product.price}")ব্যবহার করে কনফিগারেশন ফাইল থেকেproduct.priceএর মান (২০০) Inject করা হচ্ছে।@Value("#{${product.price} * ${product.discount}}")SpEL ব্যবহার করেproduct.priceএবংproduct.discountএর ভিত্তিতে একটি গাণিতিক অপারেশন (২০০ * ০.১) সম্পাদিত হচ্ছে।
৫. SpEL এবং Bean Definition
Spring Boot এর @Bean Annotation এর সাথে SpEL ব্যবহার করা যেতে পারে ডাইনামিকভাবে Bean তৈরির সময়।
উদাহরণ ৩: SpEL এবং @Bean ব্যবহার
package com.example.spel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public int productPrice() {
return 50 * 2; // SpEL equivalent to "#{50 * 2}"
}
}
এখানে productPrice() Bean তৈরি হচ্ছে, এবং SpEL এক্সপ্রেশন 50 * 2 ব্যবহার করে Bean এর মান ১০০ সেট করা হচ্ছে।
উপসংহার
Spring Boot এবং SpEL এর ইন্টিগ্রেশন আপনার অ্যাপ্লিকেশনে ডাইনামিক কনফিগারেশন, গণনা, এবং ডেটা প্রসেসিং সহজ করে তোলে। @Value, @Bean, @ConfigurationProperties, এবং অন্যান্য Spring Annotations ব্যবহার করে SpEL এক্সপ্রেশন সন্নিবেশিত করে আপনি Spring Beans এবং কনফিগারেশন ভ্যালুগুলি ডাইনামিকভাবে পরিচালনা করতে পারেন। এটি Spring Boot অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
Read more