Spring Boot-এ Configuration Properties সাধারণত application.properties বা application.yml ফাইলে সংরক্ষিত কনফিগারেশন ডেটাকে Java ক্লাসের মাধ্যমে ম্যানেজ করা হয়। SpEL (Spring Expression Language) ব্যবহার করে আপনি কনফিগারেশন প্রপার্টি ফাইলের মানগুলি ডাইনামিকভাবে কাস্টমাইজ বা প্রসেস করতে পারেন।
Spring Boot এ SpEL ব্যবহার করে Configuration Properties হ্যান্ডেল করার মাধ্যমে, আপনি প্রপার্টির মানগুলোর উপর অপারেশন, গণনা, বা লজিক প্রয়োগ করতে পারেন, যা অ্যাপ্লিকেশনকে আরও ফ্লেক্সিবল এবং ডাইনামিক করে তোলে।
Spring Boot এ Configuration Properties এবং SpEL ব্যবহার
এখানে একটি উদাহরণ দেওয়া হয়েছে যে কীভাবে আপনি Spring Boot অ্যাপ্লিকেশনে @Value অ্যানোটেশন এবং SpEL ব্যবহার করে Configuration Properties সেটিংসকে কাস্টমাইজ বা প্রসেস করতে পারেন।
১. Application Properties এ SpEL ব্যবহার
ধরা যাক, আপনার application.properties বা application.yml ফাইলে কিছু কনফিগারেশন প্রপার্টি আছে এবং আপনি সেগুলির উপর SpEL প্রয়োগ করতে চান।
১.১. application.properties ফাইলের কনফিগারেশন
app.name=SpringBootApp
app.version=2.5
app.description=This is a Spring Boot application
app.numberOfUsers=100
এখানে কিছু কনফিগারেশন প্রপার্টি রয়েছে যেগুলি অ্যাপ্লিকেশনের নাম, ভার্সন, বর্ণনা এবং ব্যবহারকারীর সংখ্যা নিয়ে তথ্য প্রদান করে।
১.২. Spring Bean Class এ SpEL ব্যবহার
Spring Boot-এ @Value অ্যানোটেশন ব্যবহার করে SpEL এক্সপ্রেশন ব্যবহার করা যেতে পারে।
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("#{${app.version} + 1}") // SpEL: Increase version by 1
private double increasedVersion;
@Value("#{T(java.lang.Math).sqrt(${app.numberOfUsers})}") // SpEL: Square root of numberOfUsers
private double usersSqrt;
@Value("#{app.name + ' - ' + app.version}") // SpEL: Concatenate name and version
private String appDetails;
public void displayConfig() {
System.out.println("App Name: " + appName);
System.out.println("Increased Version: " + increasedVersion);
System.out.println("Square Root of Number of Users: " + usersSqrt);
System.out.println("App Details: " + appDetails);
}
}
এখানে:
@Value("${app.name}")একটি সাধারণ প্রপার্টি মান ইনজেক্ট করার জন্য ব্যবহৃত হয়।@Value("#{${app.version} + 1}")SpEL ব্যবহার করেapp.versionমানে ১ যোগ করা হচ্ছে।@Value("#{T(java.lang.Math).sqrt(${app.numberOfUsers})}")SpEL ব্যবহার করেapp.numberOfUsersএর স্কয়ার রুট বের করা হচ্ছে।@Value("#{app.name + ' - ' + app.version}")SpEL ব্যবহার করেapp.nameএবংapp.versionএকত্রিত করা হচ্ছে।
১.৩. Spring Boot Application Class
Spring Boot অ্যাপ্লিকেশন ক্লাসে @ComponentScan ব্যবহার করে AppConfig ক্লাসের Bean কম্পোনেন্ট স্ক্যান করতে হবে।
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan
public class SpringBootApplicationExample implements CommandLineRunner {
private final AppConfig appConfig;
public SpringBootApplicationExample(AppConfig appConfig) {
this.appConfig = appConfig;
}
public static void main(String[] args) {
SpringApplication.run(SpringBootApplicationExample.class, args);
}
@Override
public void run(String... args) throws Exception {
appConfig.displayConfig();
}
}
১.৪. আউটপুট:
App Name: SpringBootApp
Increased Version: 3.5
Square Root of Number of Users: 10.0
App Details: SpringBootApp - 2.5
এখানে, SpEL ব্যবহার করে app.version এর মানে ১ যোগ করা হয়েছে, এবং app.numberOfUsers এর স্কয়ার রুট বের করা হয়েছে।
২. YAML ফাইলের মাধ্যমে Configuration Properties এবং SpEL ব্যবহার
Spring Boot-এ YAML ফাইলও ব্যবহার করা যেতে পারে কনফিগারেশন প্রপার্টি সংরক্ষণের জন্য। এখানে একটি YAML কনফিগারেশন ফাইলের উদাহরণ দেওয়া হলো।
২.১. application.yml ফাইলের কনফিগারেশন
app:
name: SpringBootApp
version: 2.5
description: This is a Spring Boot application
numberOfUsers: 100
২.২. Spring Bean Class এ SpEL ব্যবহার
application.yml থেকে একইভাবে SpEL ব্যবহার করা যেতে পারে:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("#{${app.version} + 1}")
private double increasedVersion;
@Value("#{T(java.lang.Math).sqrt(${app.numberOfUsers})}")
private double usersSqrt;
@Value("#{app.name + ' - ' + app.version}")
private String appDetails;
public void displayConfig() {
System.out.println("App Name: " + appName);
System.out.println("Increased Version: " + increasedVersion);
System.out.println("Square Root of Number of Users: " + usersSqrt);
System.out.println("App Details: " + appDetails);
}
}
এখানে একইভাবে application.yml থেকে প্রপার্টি ইনজেক্ট করা হচ্ছে এবং SpEL ব্যবহার করে তাদের উপর গণনা করা হচ্ছে।
২.৩. আউটপুট:
App Name: SpringBootApp
Increased Version: 3.5
Square Root of Number of Users: 10.0
App Details: SpringBootApp - 2.5
সারাংশ
Spring Boot-এ Configuration Properties ফাইলে SpEL ব্যবহার করার মাধ্যমে আপনি প্রপার্টির মানগুলি ডাইনামিকভাবে প্রসেস, কাস্টমাইজ এবং গণনা করতে পারেন। @Value অ্যানোটেশন এবং SpEL এক্সপ্রেশন ব্যবহার করে আপনি সহজেই কনফিগারেশন ফাইলের মানগুলির উপর অপারেশন করতে পারেন, যা আপনার অ্যাপ্লিকেশনকে আরও ফ্লেক্সিবল এবং কাস্টমাইজেবল করে তোলে। SpEL-এর মাধ্যমে আপনি যেকোনো প্রপার্টির মানকে পরিবর্তন করতে, প্রসেস করতে, গণনা করতে এবং স্ট্রিং কনক্যাটেনেশন করতে পারেন, যা আপনার Spring Boot অ্যাপ্লিকেশনকে আরও শক্তিশালী ও ডাইনামিক করতে সাহায্য করবে।