Spring Expression Language (SpEL) একটি শক্তিশালী ভাষা যা স্প্রিং কনফিগারেশন এবং কোডে ডাইনামিক এক্সপ্রেশন এবং লজিক ব্যবহার করতে সহায়ক। SpEL দিয়ে Null Handling করার জন্য বিভিন্ন কৌশল ব্যবহার করা যেতে পারে, যেমন null চেকিং, ডিফল্ট ভ্যালু সেট করা ইত্যাদি। SpEL তে null মানগুলো ডাইনামিকভাবে পরিচালনা করার জন্য একাধিক ফিচার রয়েছে।
Null Handling এর জন্য SpEL এর কৌশল
SpEL এর মধ্যে Null Handling করতে নিচের কৌশলগুলো ব্যবহার করা যেতে পারে:
- Null চেক করার জন্য
?:(Ternary) অপারেটর ব্যবহার - Null চেকের জন্য
nullSafeঅপারেটর ব্যবহার - Null মানের জন্য ডিফল্ট ভ্যালু সেট করা
- Null Pointer Exception থেকে সুরক্ষা (Safe Navigation)
1. Null চেক করার জন্য ?: (Ternary) অপারেটর ব্যবহার
SpEL এর ?: অপারেটর (Ternary Operator) ব্যবহার করে null চেক করতে পারেন। এটি একটি শর্তগত এক্সপ্রেশন, যা যদি ডান দিকের মানটি null হয়, তাহলে একটি ডিফল্ট মান প্রদান করে।
উদাহরণ:
<bean id="greetingMessage" class="java.lang.String">
<constructor-arg value="#{user.name != null ? user.name : 'Guest'}"/>
</bean>
এখানে, user.name যদি null হয়, তবে "Guest" মানটি প্রদান করা হবে। অন্যথায়, user.name এর আসল মানটি রিটার্ন হবে।
2. Null চেকের জন্য nullSafe অপারেটর ব্যবহার
SpEL ৩.০ থেকে nullSafe অপারেটর (?.) ব্যবহার করা যায়, যা একটি নিরাপদ পদ্ধতিতে null চেক করে। এটি null পয়েন্টার এক্সেপশন থেকে সুরক্ষা প্রদান করে।
উদাহরণ:
String name = "#user?.address?.city";
এই এক্সপ্রেশনটি:
- প্রথমে চেক করবে যে
usernullকিনা। - যদি
usernullহয়, তবে সম্পূর্ণ এক্সপ্রেশনটিnullরিটার্ন করবে এবং কোনো এক্সেপশন ঘটবে না। - অন্যথায়, এটি
user.address.cityএর মান রিটার্ন করবে, যদিaddressবাcitynullনা হয়।
3. Null মানের জন্য ডিফল্ট ভ্যালু সেট করা
SpEL ব্যবহার করে আপনি একটি ডিফল্ট ভ্যালু সেট করতে পারেন, যদি কোনো মান null হয়। এটি nullSafe অপারেটর বা ternary অপারেটর ব্যবহার করে করা যেতে পারে।
উদাহরণ:
<bean id="userEmail" class="java.lang.String">
<constructor-arg value="#{user.email != null ? user.email : 'default@example.com'}"/>
</bean>
এখানে, যদি user.email null হয়, তবে 'default@example.com' মানটি ব্যবহার করা হবে।
4. Null Pointer Exception থেকে সুরক্ষা (Safe Navigation)
SpEL এর মাধ্যমে আপনি null পয়েন্টার এক্সেপশন থেকে সুরক্ষা পেতে পারেন ?. (Safe Navigation) ব্যবহার করে। এটি null চেক করে, এবং যদি কোনো মান null হয়, তবে এক্সপ্রেশনটি null রিটার্ন করবে এবং কোনো এক্সেপশন ঘটবে না।
উদাহরণ:
public class User {
private String name;
private Address address;
public Address getAddress() {
return address;
}
public String getName() {
return name;
}
}
public class Address {
private String city;
public String getCity() {
return city;
}
}
String userCity = "#user?.address?.city"; // Safe navigation
এখানে, যদি user অথবা user.address null হয়, তাহলে কোনো NullPointerException ঘটবে না এবং userCity এ null ভ্যালু সেট হবে।
Java কোডে SpEL Null Handling উদাহরণ
Java কোডের মধ্যে SpEL ব্যবহার করে Null Handling করার জন্য নিম্নলিখিত উদাহরণটি দেখতে পারেন:
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class SpELNullHandlingExample {
public static void main(String[] args) {
// ExpressionParser তৈরি করা
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// Null Handling উদাহরণ
User user = new User();
user.setName("John");
user.setAddress(null); // address null সেট করা হয়েছে
context.setVariable("user", user);
// Safe Navigation এর মাধ্যমে SpEL এক্সপ্রেশন
String city = parser.parseExpression("#user?.address?.city").getValue(context, String.class);
System.out.println("City: " + city); // Output: null
// Ternary অপারেটর ব্যবহার করে null চেক করা
String name = parser.parseExpression("#user?.name != null ? #user.name : 'Guest'").getValue(context, String.class);
System.out.println("Name: " + name); // Output: John
// Default value set করা
String email = parser.parseExpression("#user?.email != null ? #user.email : 'default@example.com'").getValue(context, String.class);
System.out.println("Email: " + email); // Output: default@example.com
}
}
এখানে, SpEL ব্যবহার করে null চেক এবং ডিফল্ট ভ্যালু সেট করা হয়েছে। প্রথম এক্সপ্রেশনটি null রিটার্ন করবে কারণ address null, দ্বিতীয় এক্সপ্রেশনটি John রিটার্ন করবে, এবং তৃতীয় এক্সপ্রেশনটি default@example.com রিটার্ন করবে কারণ email null।
সারাংশ
SpEL (Spring Expression Language) ব্যবহার করে আপনি সহজেই null handling করতে পারেন। ?: (ternary) অপারেটর, nullSafe অপারেটর, এবং ডিফল্ট ভ্যালু সেটিংয়ের মাধ্যমে null চেক করা সম্ভব। SpEL-এর এই কৌশলগুলি আপনার অ্যাপ্লিকেশনে NullPointerException এড়াতে সহায়ক এবং ডাইনামিকভাবে ভ্যালু সেট করতে ব্যবহৃত হয়।