public final class SimpleEvaluationContext extends ObjectSE implements EvaluationContext
EvaluationContext の基本的な実装で、単純な条件評価と特定のデータバインディングシナリオを対象としています。 多くの場合、SpEL 言語の全範囲は必須ではなく、意味のある制限が必要です。例には、データバインディング式、プロパティベースのフィルターなどが含まれます。そのために、SimpleEvaluationContext は SpEL 言語構文のサブセットのみをサポートするように調整されています。Java 型、コンストラクター、Bean 参照への参照を除外します。
SimpleEvaluationContext を作成するときは、SpEL 式でのデータバインディングに必要なサポートレベルを選択する必要があります。
PropertyAccessor (通常、反射ベースではない)、DataBindingPropertyAccessor と組み合わせる可能性 便利なことに、forReadOnlyDataBinding() は DataBindingPropertyAccessor を介してプロパティへの読み取り専用アクセスを有効にします。同様に、forReadWriteDataBinding() はプロパティへの読み取りおよび書き込みアクセスを有効にします。または、forPropertyAccessors(org.springframework.expression.PropertyAccessor...) を介してカスタムアクセサーを構成し、割り当てを無効にし、必要に応じてビルダーを介してメソッド解決や型コンバーターを有効にします。
SimpleEvaluationContext は通常、デフォルトのルートオブジェクトで構成されていないことに注意してください。代わりに、一度作成され、EvaluationContext とルートオブジェクトの両方を引数として持つ定義済み Expression に対する getValue 呼び出しを通じて繰り返し使用されることを目的としています: Expression.getValue(EvaluationContext, Object)。
パワーと柔軟性を高めるため、特に内部構成のシナリオでは、代わりに StandardEvaluationContext の使用を検討してください。
forReadOnlyDataBinding(), forReadWriteDataBinding(), forPropertyAccessors(org.springframework.expression.PropertyAccessor...), StandardEvaluationContext, StandardTypeConverter, DataBindingPropertyAccessor| 修飾子と型 | クラスと説明 |
|---|---|
static class | SimpleEvaluationContext.BuilderSimpleEvaluationContext のビルダー。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
TypedValue | assignVariable(StringSE name, SupplierSE<TypedValue> valueSupplier)SimpleEvaluationContext は、式内での変数の割り当てをサポートしていません。 |
static SimpleEvaluationContext.Builder | forPropertyAccessors(PropertyAccessor... accessors) 指定された PropertyAccessor デリゲートの SimpleEvaluationContext を作成します。通常は、ユースケースに固有のカスタム PropertyAccessor です (たとえば、カスタムデータ構造の属性解決用)。プロパティの逆参照も必要な場合は、DataBindingPropertyAccessor と組み合わせられる可能性があります。 |
static SimpleEvaluationContext.Builder | forReadOnlyDataBinding()DataBindingPropertyAccessor を介してパブリックプロパティに読み取り専用でアクセスする SimpleEvaluationContext を作成します。 |
static SimpleEvaluationContext.Builder | forReadWriteDataBinding()DataBindingPropertyAccessor を介してパブリックプロパティへの読み取り / 書き込みアクセス用の SimpleEvaluationContext を作成します。 |
BeanResolver | getBeanResolver()SimpleEvaluationContext は、Bean 参照の使用をサポートしていません。 |
ListSE<ConstructorResolver> | getConstructorResolvers() このコンテキストは型参照の使用をサポートしていないため、常に空のリストを返します。 |
ListSE<MethodResolver> | getMethodResolvers() 指定された MethodResolver デリゲートがある場合はそれを返します。 |
OperatorOverloader | getOperatorOverloader()StandardOperatorOverloader のインスタンスを返します。 |
ListSE<PropertyAccessor> | getPropertyAccessors() 指定された PropertyAccessor デリゲートがある場合はそれを返します。 |
TypedValue | getRootObject() 指定されたルートオブジェクトがあれば、それを返します。 |
TypeComparator | getTypeComparator()StandardTypeComparator のインスタンスを返します。 |
TypeConverter | getTypeConverter() 構成された TypeConverter。 |
TypeLocator | getTypeLocator()SimpleEvaluationContext は型参照の使用をサポートしていません。 |
boolean | isAssignmentEnabled() この評価コンテキストによって評価される式内で割り当てが有効になっているかどうかを判断します。 |
ObjectSE | lookupVariable(StringSE name) この評価コンテキスト内の名前付き変数を検索します。 |
void | setVariable(StringSE name, ObjectSE value) この評価コンテキストの名前付き変数を指定された値に設定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic TypedValue getRootObject()
EvaluationContext の getRootObject public ListSE<PropertyAccessor> getPropertyAccessors()
PropertyAccessor デリゲートがある場合はそれを返します。public ListSE<ConstructorResolver> getConstructorResolvers()
EvaluationContext の getConstructorResolvers public ListSE<MethodResolver> getMethodResolvers()
MethodResolver デリゲートがある場合はそれを返します。@Nullable public BeanResolver getBeanResolver()
SimpleEvaluationContext は、Bean 参照の使用をサポートしていません。EvaluationContext の getBeanResolver nullpublic TypeLocator getTypeLocator()
SimpleEvaluationContext は型参照の使用をサポートしていません。EvaluationContext の getTypeLocator SpelMessage.TYPE_NOT_FOUND で SpelEvaluationException を発生させる TypeLocator 実装。public TypeConverter getTypeConverter()
TypeConverter。 デフォルトでは、これは StandardTypeConverter です。
public TypeComparator getTypeComparator()
StandardTypeComparator のインスタンスを返します。EvaluationContext の getTypeComparator public OperatorOverloader getOperatorOverloader()
StandardOperatorOverloader のインスタンスを返します。EvaluationContext の getOperatorOverloader public TypedValue assignVariable(StringSE name, SupplierSE<TypedValue> valueSupplier)
SimpleEvaluationContext は、式内での変数の割り当てをサポートしていません。EvaluationContext の assignVariable name - 割り当てる変数の名前 valueSupplier - 変数に割り当てられる値のサプライヤー TypedValueSpelEvaluationException - SpelMessage.VARIABLE_ASSIGNMENT_NOT_SUPPORTED を使用する場合 public void setVariable(StringSE name, @Nullable ObjectSE value)
EvaluationContextEvaluationContext.assignVariable(String, Supplier) とは対照的に、このメソッドは、EvaluationContext と直接対話する場合にのみプログラムで呼び出す必要があります。— たとえば、コンテキストの初期構成を提供します。
EvaluationContext の setVariable name - 設定する変数の名前 value - 変数に入れられる値 @Nullable public ObjectSE lookupVariable(StringSE name)
EvaluationContextEvaluationContext の lookupVariable name - 検索する変数の名前 null public boolean isAssignmentEnabled()
このメソッドが false を返す場合、代入 (=)、増分 (++)、および減分 (--) 演算子は無効になります。
EvaluationContext の isAssignmentEnabled true、そうでない場合は false forReadOnlyDataBinding(), SimpleEvaluationContext.Builder.withAssignmentDisabled()public static SimpleEvaluationContext.Builder forPropertyAccessors(PropertyAccessor... accessors)
PropertyAccessor デリゲートの SimpleEvaluationContext を作成します。通常は、ユースケースに固有のカスタム PropertyAccessor です (たとえば、カスタムデータ構造の属性解決用)。プロパティの逆参照も必要な場合は、DataBindingPropertyAccessor と組み合わせられる可能性があります。 デフォルトでは、このファクトリメソッドを介して作成されたコンテキストによって評価される式内で割り当てが有効になっていますが、SimpleEvaluationContext.Builder.withAssignmentDisabled() を介して割り当てを無効にすることができます。
accessors - 使用するアクセサーデリゲート DataBindingPropertyAccessor.forReadOnlyAccess(), DataBindingPropertyAccessor.forReadWriteAccess(), isAssignmentEnabled(), SimpleEvaluationContext.Builder.withAssignmentDisabled()public static SimpleEvaluationContext.Builder forReadOnlyDataBinding()
DataBindingPropertyAccessor を介してパブリックプロパティに読み取り専用でアクセスする SimpleEvaluationContext を作成します。このファクトリメソッドを介して作成されたコンテキストによって評価される式内では、割り当ては無効になります。
public static SimpleEvaluationContext.Builder forReadWriteDataBinding()
DataBindingPropertyAccessor を介してパブリックプロパティへの読み取り / 書き込みアクセス用の SimpleEvaluationContext を作成します。 デフォルトでは、このファクトリメソッドを介して作成されたコンテキストによって評価される式内で割り当てが有効になっています。割り当ては SimpleEvaluationContext.Builder.withAssignmentDisabled() を介して無効にできますが、読み取り専用アクセスが必要な場合は forReadOnlyDataBinding() を使用することをお勧めします。