类 SimpleEvaluationContext
- java.lang.Object
- org.springframework.expression.spel.support.SimpleEvaluationContext
- 所有已实现的接口:
EvaluationContext
public class SimpleEvaluationContext extends Object implements EvaluationContext
A basic implementation ofEvaluationContextthat focuses on a subset of essential SpEL features and customization options, targeting simple condition evaluation and in particular data binding scenarios.In many cases, the full extent of the SpEL language is not required and should be meaningfully restricted. Examples include but are not limited to data binding expressions, property-based filters, and others. To that effect,
SimpleEvaluationContextis tailored to support only a subset of the SpEL language syntax, e.g. excluding references to Java types, constructors, and bean references.When creating a
SimpleEvaluationContextyou need to choose the level of support that you need for property access in SpEL expressions:- A custom
PropertyAccessor(typically not reflection-based), potentially combined with aDataBindingPropertyAccessor - Data binding properties for read-only access
- Data binding properties for read and write
Conveniently,
forReadOnlyDataBinding()enables read access to properties viaDataBindingPropertyAccessor; same forforReadWriteDataBinding()when write access is needed as well. Alternatively, configure custom accessors viaforPropertyAccessors(org.springframework.expression.PropertyAccessor...), and potentially activate method resolution and/or a type converter through the builder.Note that
SimpleEvaluationContextis typically not configured with a default root object. Instead it is meant to be created once and used repeatedly throughgetValuecalls on a pre-compiledExpressionwith both anEvaluationContextand a root object as arguments:Expression.getValue(EvaluationContext, Object).For more power and flexibility, in particular for internal configuration scenarios, consider using
StandardEvaluationContextinstead.- 从以下版本开始:
- 4.3.15
- 作者:
- Rossen Stoyanchev, Juergen Hoeller
- 另请参阅:
forPropertyAccessors(org.springframework.expression.PropertyAccessor...),forReadOnlyDataBinding(),forReadWriteDataBinding(),StandardEvaluationContext,StandardTypeConverter,DataBindingPropertyAccessor
嵌套类概要
嵌套类 修饰符和类型 类 说明 static classSimpleEvaluationContext.BuilderBuilder forSimpleEvaluationContext.
方法概要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 说明 static SimpleEvaluationContext.BuilderforPropertyAccessors(PropertyAccessor... accessors)Create aSimpleEvaluationContextfor the specifiedPropertyAccessordelegates: typically a customPropertyAccessorspecific to a use case (e.g. attribute resolution in a custom data structure), potentially combined with aDataBindingPropertyAccessorif property dereferences are needed as well.static SimpleEvaluationContext.BuilderforReadOnlyDataBinding()Create aSimpleEvaluationContextfor read-only access to public properties viaDataBindingPropertyAccessor.static SimpleEvaluationContext.BuilderforReadWriteDataBinding()Create aSimpleEvaluationContextfor read-write access to public properties viaDataBindingPropertyAccessor.BeanResolvergetBeanResolver()SimpleEvaluationContextdoes not support the use of bean references.List<ConstructorResolver>getConstructorResolvers()Return an empty list, always, since this context does not support the use of type references.List<MethodResolver>getMethodResolvers()Return the specifiedMethodResolverdelegates, if any.OperatorOverloadergetOperatorOverloader()Return an instance ofStandardOperatorOverloader.List<PropertyAccessor>getPropertyAccessors()Return the specifiedPropertyAccessordelegates, if any.TypedValuegetRootObject()Return the specified root object, if any.TypeComparatorgetTypeComparator()Return an instance ofStandardTypeComparator.TypeConvertergetTypeConverter()The configuredTypeConverter.TypeLocatorgetTypeLocator()SimpleEvaluationContextdoes not support use of type references.ObjectlookupVariable(String name)Look up a named variable within this evaluation context.voidsetVariable(String name, Object value)Set a named variable within this evaluation context to a specified value.
方法详细资料
getRootObject
public TypedValue getRootObject()
Return the specified root object, if any.- 指定者:
getRootObject在接口中EvaluationContext
getPropertyAccessors
public List<PropertyAccessor> getPropertyAccessors()
Return the specifiedPropertyAccessordelegates, if any.
getConstructorResolvers
public List<ConstructorResolver> getConstructorResolvers()
Return an empty list, always, since this context does not support the use of type references.- 指定者:
getConstructorResolvers在接口中EvaluationContext
getMethodResolvers
public List<MethodResolver> getMethodResolvers()
Return the specifiedMethodResolverdelegates, if any.
getBeanResolver
public BeanResolver getBeanResolver()
SimpleEvaluationContextdoes not support the use of bean references.- 指定者:
getBeanResolver在接口中EvaluationContext- 返回:
- always
null
getTypeLocator
public TypeLocator getTypeLocator()
SimpleEvaluationContextdoes not support use of type references.- 指定者:
getTypeLocator在接口中EvaluationContext- 返回:
TypeLocatorimplementation that raises aSpelEvaluationExceptionwithSpelMessage.TYPE_NOT_FOUND.
getTypeConverter
public TypeConverter getTypeConverter()
The configuredTypeConverter.By default this is
StandardTypeConverter.
getTypeComparator
public TypeComparator getTypeComparator()
Return an instance ofStandardTypeComparator.- 指定者:
getTypeComparator在接口中EvaluationContext
getOperatorOverloader
public OperatorOverloader getOperatorOverloader()
Return an instance ofStandardOperatorOverloader.- 指定者:
getOperatorOverloader在接口中EvaluationContext
setVariable
public void setVariable(String name, Object value)
从接口复制的说明:EvaluationContextSet a named variable within this evaluation context to a specified value.- 指定者:
setVariable在接口中EvaluationContext- 参数:
name- variable to setvalue- value to be placed in the variable
lookupVariable
public Object lookupVariable(String name)
从接口复制的说明:EvaluationContextLook up a named variable within this evaluation context.- 指定者:
lookupVariable在接口中EvaluationContext- 参数:
name- variable to lookup- 返回:
- the value of the variable, or
nullif not found
forPropertyAccessors
public static SimpleEvaluationContext.Builder forPropertyAccessors(PropertyAccessor... accessors)
Create aSimpleEvaluationContextfor the specifiedPropertyAccessordelegates: typically a customPropertyAccessorspecific to a use case (e.g. attribute resolution in a custom data structure), potentially combined with aDataBindingPropertyAccessorif property dereferences are needed as well.- 参数:
accessors- the accessor delegates to use- 另请参阅:
DataBindingPropertyAccessor.forReadOnlyAccess(),DataBindingPropertyAccessor.forReadWriteAccess()
forReadOnlyDataBinding
public static SimpleEvaluationContext.Builder forReadOnlyDataBinding()
Create aSimpleEvaluationContextfor read-only access to public properties viaDataBindingPropertyAccessor.
forReadWriteDataBinding
public static SimpleEvaluationContext.Builder forReadWriteDataBinding()
Create aSimpleEvaluationContextfor read-write access to public properties viaDataBindingPropertyAccessor.