- Spring SpEL - Home
- Spring SpEL - Overview
- Spring SpEL - Environment Setup
- Spring SpEL - Create Project
- Spring SpEL - Literal Expression
- Spring SpEL - Properties
- Spring SpEL - Array
- Spring SpEL - List
- Spring SpEL - Map
- Spring SpEL - Methods
- Spring SpEL - Relational Operators
- Spring SpEL - Logical Operators
- Spring SpEL - Mathematical Operators
- Spring SpEL - Assignment Operator
- Spring SpEL - Constructor
- Spring SpEL - Variables
- Spring SpEL - Functions
- Spring SpEL - Expression Templating
Spring SpEL Expression Evaluation
Spring SpEL Bean Configuration
Spring SpEL Language Reference
Spring SpEL Operators
Spring SpEL Special Operators
Spring SpEL Collections
Spring SpEL Other Features
Spring SpEL - Useful Resources
Spring SpEL - EvaluationContext Interface
EvaluationContext is an interface of Spring SpEL which helps to execute an expression string in a context. References are resolved in this context when encountered during expression evaluation.
Syntax
Following is an example of creating an EvaluationContext and using its object to get a value.
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'name'");
EvaluationContext context = new StandardEvaluationContext(employee);
String name = (String) exp.getValue();
It should print the result as follows −
Mahesh
Here the result is the value of the name field of the employee object, Mahesh. The StandardEvaluationContext class specifies the object against which the expression is evaluated. StandardEvaluationContext cannot be changed once context object is created. It caches the state and allows expression evaluation to be performed quickly. Following example shows the various usecases.
Example - Usage of EvaluationContext
The following example shows a class MainApp.
Let's update the project created in Spring SpEL - Create Project chapter. We're adding/updating following files −
Employee.java − Employee class.
MainApp.java − Main application to run and test.
Employee.java
Here is the content of Employee.java file −
package com.tutorialspoint;
public class Employee {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MainApp.java
Here is the content of MainApp.java file −
package com.tutorialspoint;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
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) {
Employee employee = new Employee();
employee.setId(1);
employee.setName("Mahesh");
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = new StandardEvaluationContext(employee);
Expression exp = parser.parseExpression("name");
// evaluate object using context
String name = (String) exp.getValue(context);
System.out.println(name);
Employee employee1 = new Employee();
employee1.setId(2);
employee1.setName("Rita");
// evaluate object directly
name = (String) exp.getValue(employee1);
System.out.println(name);
exp = parser.parseExpression("id > 1");
// evaluate object using context
boolean result = exp.getValue(context, Boolean.class);
System.out.println(result); // evaluates to false
result = exp.getValue(employee1, Boolean.class);
System.out.println(result); // evaluates to true
}
}
Output
Once you are done creating the source and bean configuration files, let us run the application. If everything is fine with your application, it will print the following message −
Mahesh Rita false true