Package org.springframework.expression

# Interface EvaluationContext

All Known Implementing Classes:
  `SimpleEvaluationContext`, `StandardEvaluationContext`

public interface EvaluationContext
Expressions are executed in an evaluation context. It is in this context that references are resolved when encountered during expression evaluation.

There are two default implementations of this interface.

- `SimpleEvaluationContext`: a simpler builder-style `EvaluationContext` variant for data-binding purposes, which allows for opting into several SpEL features as needed.
- `StandardEvaluationContext`: a powerful and highly configurable `EvaluationContext` implementation, which can be extended, rather than having to implement everything manually.

Since:
  3.0
Author:
  Andy Clement, Juergen Hoeller, Sam Brannen

## Method Summary

Modifier and Type
Method
Description
`default TypedValue`
`assignVariable(String name, Supplier<TypedValue> valueSupplier)`
Assign the value created by the specified `Supplier` to a named variable within this evaluation context.
`BeanResolver`
`getBeanResolver()`
Return a bean resolver that can look up beans by name.
`default List<ConstructorResolver>`
`getConstructorResolvers()`
Return a list of resolvers that will be asked in turn to locate a constructor.
`default List<IndexAccessor>`
`getIndexAccessors()`
Return a list of index accessors that will be asked in turn to access or set an indexed value.
`default List<MethodResolver>`
`getMethodResolvers()`
Return a list of resolvers that will be asked in turn to locate a method.
`OperatorOverloader`
`getOperatorOverloader()`
Return an operator overloader that may support mathematical operations between more than the standard set of types.
`default List<PropertyAccessor>`
`getPropertyAccessors()`
Return a list of accessors that will be asked in turn to read/write a property.
`TypedValue`
`getRootObject()`
Return the default root context object against which unqualified properties, methods, etc.
`TypeComparator`
`getTypeComparator()`
Return a type comparator for comparing pairs of objects for equality.
`TypeConverter`
`getTypeConverter()`
Return a type converter that can convert (or coerce) a value from one type to another.
`TypeLocator`
`getTypeLocator()`
Return a type locator that can be used to find types, either by short or fully qualified name.
`default boolean`
`isAssignmentEnabled()`
Determine if assignment is enabled within expressions evaluated by this evaluation context.
`Object`
`lookupVariable(String name)`
Look up a named variable within this evaluation context.
`void`
`setVariable(String name, Object value)`
Set a named variable in this evaluation context to a specified value.

## Method Details

### getRootObject

TypedValue getRootObject()
Return the default root context object against which unqualified properties, methods, etc. should be resolved.

This can be overridden when evaluating an expression.

### getPropertyAccessors

default List<PropertyAccessor> getPropertyAccessors()
Return a list of accessors that will be asked in turn to read/write a property.

The default implementation returns an empty list.

### getIndexAccessors

default List<IndexAccessor> getIndexAccessors()
Return a list of index accessors that will be asked in turn to access or set an indexed value.

The default implementation returns an empty list.

Since:
  6.2

### getConstructorResolvers

default List<ConstructorResolver> getConstructorResolvers()
Return a list of resolvers that will be asked in turn to locate a constructor.

The default implementation returns an empty list.

### getMethodResolvers

default List<MethodResolver> getMethodResolvers()
Return a list of resolvers that will be asked in turn to locate a method.

The default implementation returns an empty list.

### getBeanResolver

@Nullable BeanResolver getBeanResolver()
Return a bean resolver that can look up beans by name.

### getTypeLocator

TypeLocator getTypeLocator()
Return a type locator that can be used to find types, either by short or fully qualified name.

### getTypeConverter

TypeConverter getTypeConverter()
Return a type converter that can convert (or coerce) a value from one type to another.

### getTypeComparator

TypeComparator getTypeComparator()
Return a type comparator for comparing pairs of objects for equality.

### getOperatorOverloader

OperatorOverloader getOperatorOverloader()
Return an operator overloader that may support mathematical operations between more than the standard set of types.

### assignVariable

default TypedValue assignVariable(String name, Supplier<TypedValue> valueSupplier)
Assign the value created by the specified `Supplier` to a named variable within this evaluation context.

In contrast to `setVariable(String, Object)`, this method should only be invoked to support the assignment operator (`=`) within an expression.

By default, this method delegates to `setVariable(String, Object)`, providing the value created by the `valueSupplier`. Concrete implementations may override this default method to provide different semantics.

Parameters:
  `name` - the name of the variable to assign
  `valueSupplier` - the supplier of the value to be assigned to the variable
Returns:
  a `TypedValue` wrapping the assigned value
Since:
  5.2.24

### setVariable

void setVariable(String name, @Nullable Object value)
Set a named variable in this evaluation context to a specified value.

In contrast to `assignVariable(String, Supplier)`, this method should only be invoked programmatically when interacting directly with the `EvaluationContext` — for example, to provide initial configuration for the context.

Parameters:
  `name` - the name of the variable to set
  `value` - the value to be placed in the variable
See Also:
  - `lookupVariable(String)`

### lookupVariable

@Nullable Object lookupVariable(String name)
Look up a named variable within this evaluation context.

Parameters:
  `name` - the name of the variable to look up
Returns:
  the value of the variable, or `null` if not found

### isAssignmentEnabled

default boolean isAssignmentEnabled()
Determine if assignment is enabled within expressions evaluated by this evaluation context.

If this method returns `false`, the assignment (`=`), increment (`++`), and decrement (`--`) operators are disabled.

By default, this method returns `true`. Concrete implementations may override this default method to disable assignment.

Returns:
  `true` if assignment is enabled; `false` otherwise
Since:
  5.3.38