- Spring SpEL Tutorial
- Spring SpEL - Home
- Spring SpEL - Overview
- Spring SpEL - Environment Setup
- Spring SpEL - Create Project
- Expression Evaluation
- Spring SpEL - Expression Interface
- Spring SpEL - EvaluationContext
- Bean Configuration
- Spring SpEL - XML Configuration
- Spring SpEL - Annotation Configuration
- Language Reference
- Spring SpEL - Literal Expression
- Spring SpEL - Properties
- Spring SpEL - Array
- Spring SpEL - List
- Spring SpEL - Map
- Spring SpEL - Methods
- Operators
- Spring SpEL - Relational Operators
- Spring SpEL - Logical Operators
- Spring SpEL - Mathematical Operators
- Spring SpEL - Assignment Operator
- Special Operators
- Spring SpEL - Ternary Operator
- Spring SpEL - Elvis Operator
- Spring SpEL - Safe Navigation Operator
- Collections
- Spring SpEL - Collection Selection
- Spring SpEL - Collection Projection
- Other Features
- Spring SpEL - Constructor
- Spring SpEL - Variables
- Spring SpEL - Functions
- Spring SpEL - Expression Templating
- Spring SpEL - Useful Resources
- Spring SpEL - Quick Guide
- Spring SpEL - Useful Resources
- Spring SpEL - Discussion
Spring SpEL - Collection Projection
SpEL expression supports Collection Projection which is a very powerful expression allowing to evaluate sub-expression and in result returns a new collection.
Syntax
![projectionExpresion]
Following example shows the usage.
List<String> list = (List<String>) parser.parseExpression("employees.![country]").getValue(deptContext);
Here SpEL will return only those employees from the list of employees whose country is USA.
Following example shows the various use cases.
Example
Let's update the project created in Spring SpEL - Create Project chapter. We're adding/updating following files −
Employee.java − Employee class.
Dept.java − Department class.
MainApp.java − Main application to run and test.
Here is the content of Employee.java file −
package com.tutorialspoint; public class Employee { private String name; private String country; public Employee(String name, String country) { this.name = name; this.country = country; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String toString() { return "[" +name+ ", "+country + "]"; } }
Here is the content of Dept.java file −
package com.tutorialspoint; import java.util.List; public class Dept { private List<Employee> employees; public List<Employee> getEmployees() { return employees; } public void setEmployees(List<Employee> employees) { this.employees = employees; } }
Here is the content of MainApp.java file −
package com.tutorialspoint; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import org.springframework.expression.EvaluationContext; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class MainApp { public static void main(String[] args) throws ParseException { ExpressionParser parser = new SpelExpressionParser(); Employee employee1 = new Employee("Robert", "USA"); Employee employee2 = new Employee("Julie", "USA"); Employee employee3 = new Employee("Ramesh", "India"); List<Employee> employees = new ArrayList<Employee>(); employees.add(employee1); employees.add(employee2); employees.add(employee3); Dept dept = new Dept(); dept.setEmployees(employees); EvaluationContext deptContext = new StandardEvaluationContext(dept); // Select list of countries List<String> list = (List<String>) parser.parseExpression("employees.![country]").getValue(deptContext); System.out.println(list); } }
Output
[USA, USA, India]
Advertisements