Interface EvaluationContext

All Known Implementing Classes:
MethodBasedEvaluationContext, 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 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

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

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

      List<MethodResolver> getMethodResolvers()
      Return a list of resolvers that will be asked in turn to locate a method.
    • 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
    • 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