Collection Projection হল SpEL-এর একটি শক্তিশালী বৈশিষ্ট্য, যা ব্যবহার করে আপনি একটি Collection থেকে নির্দিষ্ট ডেটা বা উপাদান বের করতে পারেন, বিশেষত একটি নির্দিষ্ট শর্ত বা মেথডের ভিত্তিতে। SpEL-এ Projection মূলত Collection থেকে নির্বাচিত উপাদান বা বৈশিষ্ট্য বের করার জন্য ব্যবহৃত হয়। এটি সাধারণত জাভা অ্যাপ্লিকেশন বা Spring Beans এর মধ্যে Filter, Map, এবং Select অপারেশন করতে ব্যবহৃত হয়।
Projection এর মাধ্যমে ডেটা বের করার মূল ধারণা
SpEL-এ Collection Projection এর মাধ্যমে আপনি একটি Collection এর মধ্যে থেকে প্রয়োজনীয় ডেটা সিলেক্ট করতে পারেন এবং সেই ডেটা নিয়ে কাজ করতে পারেন। এটি অ্যারে, লিস্ট, সেট, অথবা ম্যাপ থেকে নির্বাচিত উপাদানগুলো বের করার জন্য কার্যকরী।
SpEL-এ Collection Projection এর ব্যবহার
1. List থেকে নির্দিষ্ট মান বের করা
SpEL-এ Projection ব্যবহার করে List থেকে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা বের করা যায়। উদাহরণস্বরূপ, লিস্টে এমন আইটেম বের করা যেগুলোর দৈর্ঘ্য ৫ এর বেশি।
@Value("#{myList.?[length() > 5]}")
private List<String> filteredList;
ব্যাখ্যা:
myList.?[length() > 5]SpEL এক্সপ্রেশনটিmyListথেকে এমন উপাদানগুলো বের করবে যেগুলোর দৈর্ঘ্য ৫ এর বেশি।
2. Map থেকে নির্দিষ্ট Key/Value বের করা
SpEL-এ Map থেকে নির্দিষ্ট Key বা Value বের করা যায়।
@Value("#{myMap['key1']}")
private String mapValue;
ব্যাখ্যা:
এখানে myMap['key1'] SpEL এক্সপ্রেশনটি myMap থেকে key1 এর মান বের করবে।
3. Set থেকে নির্দিষ্ট শর্তে উপাদান বের করা
SpEL-এ Set এর মধ্যে এমন উপাদান বের করা যায় যা কিছু নির্দিষ্ট শর্ত পূর্ণ করে।
@Value("#{mySet.?[startsWith('S')]}")
private Set<String> filteredSet;
ব্যাখ্যা:
এখানে mySet.?[startsWith('S')] SpEL এক্সপ্রেশনটি mySet থেকে এমন উপাদানগুলো বের করবে যেগুলোর নাম 'S' দিয়ে শুরু হয়।
4. List থেকে Property Projection
যদি একটি List অবজেক্টে Bean থাকে, তবে SpEL এর মাধ্যমে সেই Bean এর একটি নির্দিষ্ট প্রপার্টি বের করা যায়। উদাহরণস্বরূপ, Employee ক্লাসের নামের সব আইটেম একটি লিস্ট থেকে বের করা।
@Value("#{employeeList.?[salary > 50000].name}")
private List<String> highSalaryEmployeeNames;
ব্যাখ্যা:
এখানে employeeList.?[salary > 50000].name SpEL এক্সপ্রেশনটি employeeList থেকে এমন Employee গুলোর নাম বের করবে যাদের salary ৫০,০০০ এর বেশি।
Spring Bean-এ Collection Projection এর বাস্তব উদাহরণ
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Component
public class CollectionProjectionExample {
@Value("#{myList.?[length() > 3]}")
private List<String> filteredList;
@Value("#{myMap['key1']}")
private String mapValue;
@Value("#{mySet.?[startsWith('A')]}")
private Set<String> filteredSet;
@Value("#{employeeList.?[salary > 50000].name}")
private List<String> highSalaryEmployeeNames;
public void printFilteredCollections() {
System.out.println("Filtered List: " + filteredList);
System.out.println("Map Value for key1: " + mapValue);
System.out.println("Filtered Set: " + filteredSet);
System.out.println("High Salary Employee Names: " + highSalaryEmployeeNames);
}
}
Spring XML Configuration Example
<bean id="myList" class="java.util.ArrayList">
<constructor-arg>
<list>
<value>Spring</value>
<value>SpEL</value>
<value>Collection</value>
<value>Filter</value>
</list>
</constructor-arg>
</bean>
<bean id="mySet" class="java.util.HashSet">
<constructor-arg>
<set>
<value>Apple</value>
<value>Banana</value>
<value>Strawberry</value>
</set>
</constructor-arg>
</bean>
<bean id="myMap" class="java.util.HashMap">
<constructor-arg>
<map>
<entry key="key1" value="value1"/>
<entry key="key2" value="value2"/>
</map>
</constructor-arg>
</bean>
<bean id="employeeList" class="java.util.ArrayList">
<constructor-arg>
<list>
<bean class="com.example.Employee">
<property name="name" value="John"/>
<property name="salary" value="60000"/>
</bean>
<bean class="com.example.Employee">
<property name="name" value="Alice"/>
<property name="salary" value="40000"/>
</bean>
<bean class="com.example.Employee">
<property name="name" value="Bob"/>
<property name="salary" value="70000"/>
</bean>
</list>
</constructor-arg>
</bean>
SpEL Collection Projection এর সুবিধা
| বৈশিষ্ট্য | বর্ণনা |
|---|---|
| ডায়নামিক ডেটা এক্সপ্রেশন | Collection থেকে প্রয়োজনীয় ডেটা বের করা খুব সহজ এবং ডায়নামিকভাবে করা যায়। |
| শর্তাধীন ডেটা ফিল্টারিং | SpEL এর মাধ্যমে ফিল্টারিং বা শর্ত প্রয়োগ করে প্রয়োজনীয় ডেটা বের করা সম্ভব। |
| ফ্লেক্সিবিলিটি | SpEL ব্যবহার করে Collection এর যে কোনো অংশকে প্রোজেক্ট করা যায়। |
| অ্যারে, লিস্ট, সেট, ম্যাপ সাপোর্ট | SpEL বিভিন্ন Collection টাইপ যেমন অ্যারে, লিস্ট, সেট, ম্যাপ প্রোজেক্ট করতে সমর্থন করে। |
Spring Expression Language (SpEL) এর মাধ্যমে Collection Projection ব্যবহার করে আপনি সহজেই একটি Collection থেকে নির্দিষ্ট শর্ত, প্রপার্টি বা উপাদান বের করতে পারেন। এটি Spring Beans বা XML কনফিগারেশন ফাইলে ডায়নামিক ডেটা প্রসেসিংয়ের জন্য খুবই কার্যকরী।
Read more