Spring Expression
Language (SpEL)
The Spring Expression Language
(SpEL) is a powerful expression language that supports querying and
manipulating an object graph at runtime. The language syntax is similar to
Unified EL but offers additional features, most notably method invocation and
basic string templating functionality.
The
Spring Expression Language was created to provide the Spring community with a
single well supported expression language that can be used across all the
products in the Spring portfolio. SpEL is based on an technology agnostic API
allowing other expression language implementations to be integrated should the
need arise.
While
SpEL serves as the foundation for expression evaluation within the Spring
portfolio, it is not directly tied to Spring and can be used independently.
The expression language supports the
following functionality
- Literal expressions
- Boolean and relational operators
- Regular expressions
- Class expressions
- Accessing properties, arrays, lists, maps
- Method invocation
- Relational operators
- Assignment
- Calling constructors
- Ternary operator
- Variables
- User defined functions
- Collection projection
- Collection selection
- Templated expressions
The
EvaluationContext interface
The interface EvaluationContext is used
when evaluating an expression to resolve properties, methods, fields, and to
help perform type conversion. The StandardEvaluationContext is where
you specify the root object to evaluate against via the method setRootObject or passing
the root object into the
constructor. . You can also specify variables and functions that will be used
in the expression using the methods setVariable and registerFunction. The StandardEvaluationContext is also where you can
register custom ConstructorResolvers, MethodResolvers, and PropertyAccessors to
extend how SpEL evaluates expressions.
Type
Conversion
By
default SpEL uses the conversion service available in Spring core (org.springframework.core.convert.ConversionService). This conversion service comes with many converters
built in for common conversions but is also fully extensible so custom
conversions between types can be added. Additionally it has the capability that
it is generics aware. This means that when working with generic types in
expressions, SpEL will attempt conversions to maintain type correctness for any
objects it encounters.
Happy to found this blog. Good Post!. It was so good to read and useful to improve my knowledge as updated one, keep blogging. Hibernate Training in Electronic City
ReplyDeleteJava Training in Electronic City