স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজ (Spring Expression Language - SpEL) হল একটি শক্তিশালী এক্সপ্রেশন ল্যাঙ্গুয়েজ যা স্প্রিং ফ্রেমওয়ার্কের মধ্যে বিভিন্ন কনফিগারেশন এবং ডেটা এক্সপ্রেশন ব্যবহারের জন্য ব্যবহৃত হয়। এটি ডাইনামিক এক্সপ্রেশন প্রক্রিয়াকরণের জন্য স্প্রিং কনটেইনারে ব্যবহৃত হয় এবং এতে অবজেক্ট প্রোপার্টি অ্যাক্সেস, ফাংশন কল, কন্ডিশনাল এক্সপ্রেশন ইত্যাদি অন্তর্ভুক্ত রয়েছে।
SpEL এর মৌলিক সিনট্যাক্স
SpEL এর সঠিক ব্যবহার বুঝতে হলে কিছু মৌলিক সিনট্যাক্স এবং ধারণা জানা গুরুত্বপূর্ণ।
১. এক্সপ্রেশন সন্নিবেশ (Expression Insertion)
SpEL এক্সপ্রেশন সাধারণত ${} ব্রেসেস এর মধ্যে লেখা হয়।
${expression}
উদাহরণ
@Value("#{2 * 3}")
private int result; // result = 6
এখানে 2 * 3 একটি SpEL এক্সপ্রেশন এবং এটি 6 হিসাবে রেজাল্ট প্রদান করবে।
২. অবজেক্ট প্রোপার্টি অ্যাক্সেস (Object Property Access)
SpEL ব্যবহার করে একটি অবজেক্টের প্রোপার্টি অ্যাক্সেস করা যায়। এর জন্য . ডট অপারেটর ব্যবহার করা হয়।
${person.name}
উদাহরণ
public class Person {
private String name;
private int age;
// Getter and Setter
}
@Value("#{person.name}")
private String personName;
এখানে, person.name SpEL এক্সপ্রেশনটি Person অবজেক্টের name প্রোপার্টির মান পাবে।
৩. ফাংশন কল (Function Call)
SpEL এ ফাংশন কল করা যায়। এর জন্য # সিম্বল ব্যবহার করা হয়, যা স্প্রিং কনটেইনারে থাকা একটি ফাংশনকে কল করে।
#{T(java.lang.Math).random()}
উদাহরণ
@Value("#{T(java.lang.Math).random()}")
private double randomValue;
এখানে, T(java.lang.Math).random() SpEL এক্সপ্রেশনটি Math.random() ফাংশন কল করে এবং একটি র্যান্ডম ভ্যালু প্রদান করে।
৪. কন্ডিশনাল এক্সপ্রেশন (Conditional Expression)
SpEL এ কন্ডিশনাল এক্সপ্রেশন বা শর্তসাপেক্ষ এক্সপ্রেশনও ব্যবহার করা যায়, যেটি ?: অপারেটর ব্যবহার করে লেখা হয়।
${condition ? 'trueValue' : 'falseValue'}
উদাহরণ
@Value("#{2 > 1 ? 'True' : 'False'}")
private String result;
এখানে, 2 > 1 শর্তটি সত্য হলে True এবং মিথ্যা হলে False রিটার্ন করবে।
৫. লিস্ট বা অ্যারের উপাদান অ্যাক্সেস (Accessing List or Array Elements)
SpEL এর মাধ্যমে একটি List বা Array এর নির্দিষ্ট উপাদানও অ্যাক্সেস করা যায়।
${list[0]} // First element of the list
উদাহরণ
@Value("#{list[0]}")
private String firstElement;
এখানে, list[0] প্রথম উপাদানটি অ্যাক্সেস করবে যা তালিকার প্রথম আইটেমের মান।
৬. মেথড কল (Method Call)
SpEL এ অবজেক্টের মেথডও কল করা যায়। মেথড কলের জন্য () ব্যবহার করা হয়।
${person.getName()}
উদাহরণ
@Value("#{person.getName()}")
private String personName;
এখানে, person.getName() মেথড কল করে Person অবজেক্টের নাম রিটার্ন করবে।
৭. স্প্রিং কনটেইনারের রেফারেন্স (Spring Bean References)
SpEL স্প্রিং কনটেইনারের মধ্যে অবস্থিত Beans রেফারেন্স করার জন্য @{} ব্যবহার করা হয়।
@Value("#{myBean.someProperty}")
private String property;
উদাহরণ
@Component
public class MyBean {
private String name = "SpEL Example";
public String getName() {
return name;
}
}
@Value("#{myBean.name}")
private String beanName;
এখানে, SpEL myBean.name ব্যবহার করে MyBean ক্লাসের name প্রোপার্টি রিটার্ন করবে।
৮. গণনা এবং গাণিতিক অপারেশন (Mathematical Operations)
SpEL গাণিতিক অপারেশন যেমন যোগফল, বিয়োগ, গুণফল ইত্যাদি সমর্থন করে।
#{5 + 10}
উদাহরণ
@Value("#{5 + 10}")
private int sum;
এখানে, 5 + 10 SpEL এক্সপ্রেশনটি 15 রিটার্ন করবে।
উপসংহার
SpEL একটি শক্তিশালী টুল যা স্প্রিং কনফিগারেশন এবং ডাইনামিক এক্সপ্রেশন প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। বেসিক সিনট্যাক্স হিসেবে এটি অবজেক্ট প্রোপার্টি অ্যাক্সেস, কন্ডিশনাল এক্সপ্রেশন, ফাংশন কল, লিস্ট/অ্যারে অ্যাক্সেস এবং গাণিতিক অপারেশনসহ আরো অনেক কিছু সমর্থন করে। SpEL এর সাহায্যে স্প্রিং অ্যাপ্লিকেশনকে আরও ডাইনামিক এবং কনফিগারেবল করা যায়।
Read more