クラス SimpleEvaluationContext
- 実装されたすべてのインターフェース:
EvaluationContext
EvaluationContext
の基本的な実装で、単純な条件評価と特定のデータバインディングシナリオを対象としています。 多くの場合、SpEL 言語の全範囲は必要ではなく、意味のある形で制限する必要があります。例としては、データバインディング式、プロパティベースのフィルターなどがありますが、これらに限定されません。そのため、SimpleEvaluationContext
は、Java 型、コンストラクター、Bean 参照への参照を除外するなど、SpEL 言語構文のサブセットのみをサポートするように調整されています。
SimpleEvaluationContext
を作成するときは、SpEL 式でのデータバインディングに必要なサポートレベルを選択する必要があります。
- 読み取り専用アクセスのデータバインディング
- 読み取りおよび書き込みアクセスのデータバインディング
- カスタム
PropertyAccessor
(通常、反射ベースではない)、DataBindingPropertyAccessor
と組み合わせる可能性
便利なことに、forReadOnlyDataBinding()
は DataBindingPropertyAccessor
を介してプロパティへの読み取り専用アクセスを有効にします。同様に、forReadWriteDataBinding()
はプロパティへの読み取りおよび書き込みアクセスを有効にします。または、forPropertyAccessors(org.springframework.expression.PropertyAccessor...)
を介してカスタムアクセサーを構成し、割り当てを無効にし、必要に応じてビルダーを介してメソッド解決や型コンバーターを有効にします。
SimpleEvaluationContext
は通常、デフォルトのルートオブジェクトで構成されていないことに注意してください。代わりに、一度作成され、EvaluationContext
とルートオブジェクトの両方を引数として持つ定義済み Expression
に対する getValue
呼び出しを通じて繰り返し使用されることを目的としています: Expression.getValue(EvaluationContext, Object)
。
EvaluationContext
API で定義されている変数の設定と検索のサポートに加え、SimpleEvaluationContext
は関数を変数として登録および検索することもサポートします。この評価コンテキストでは関数は変数と共通の名前空間を共有するため、関数名と変数名が重複しないように注意する必要があります。
パワーと柔軟性を高めるため、特に内部構成のシナリオでは、代わりに StandardEvaluationContext
の使用を検討してください。
- 導入:
- 4.3.15
- 作成者:
- Rossen Stoyanchev, Juergen Hoeller, Sam Brannen
- 関連事項:
ネストされたクラスのサマリー
ネストされたクラス方法の概要
修飾子と型メソッド説明assignVariable
(StringSE name, SupplierSE<TypedValue> valueSupplier) SimpleEvaluationContext
は、式内での変数の割り当てをサポートしていません。forPropertyAccessors
(PropertyAccessor... accessors) 指定されたPropertyAccessor
デリゲートのSimpleEvaluationContext
を作成します。通常は、ユースケースに固有のカスタムPropertyAccessor
です (たとえば、カスタムデータ構造の属性解決用)。プロパティの逆参照も必要な場合は、DataBindingPropertyAccessor
と組み合わせられる可能性があります。DataBindingPropertyAccessor
を介してパブリックプロパティに読み取り専用でアクセスするSimpleEvaluationContext
を作成します。DataBindingPropertyAccessor
を介してパブリックプロパティへの読み取り / 書き込みアクセス用のSimpleEvaluationContext
を作成します。SimpleEvaluationContext
は、Bean 参照の使用をサポートしていません。指定されたIndexAccessor
デリゲートがある場合はそれを返します。指定されたMethodResolver
デリゲートがある場合はそれを返します。StandardOperatorOverloader
のインスタンスを返します。指定されたPropertyAccessor
デリゲートがある場合はそれを返します。指定されたルートオブジェクトがあれば、それを返します。StandardTypeComparator
のインスタンスを返します。構成されたTypeConverter
。SimpleEvaluationContext
は型参照の使用をサポートしていません。boolean
この評価コンテキストによって評価される式内で割り当てが有効になっているかどうかを判断します。lookupVariable
(StringSE name) この評価コンテキスト内で名前付き変数または関数を検索します。void
setVariable
(StringSE name, ObjectSE value) この評価コンテキストの名前付き変数または関数を指定された値に設定します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.expression.EvaluationContext から継承されたメソッド
getConstructorResolvers
メソッドの詳細
getRootObject
指定されたルートオブジェクトがあれば、それを返します。- 次で指定:
- インターフェース
EvaluationContext
のgetRootObject
getPropertyAccessors
指定されたPropertyAccessor
デリゲートがある場合はそれを返します。getIndexAccessors
指定されたIndexAccessor
デリゲートがある場合はそれを返します。- 次で指定:
- インターフェース
EvaluationContext
のgetIndexAccessors
- 導入:
- 6.2
- 関連事項:
getMethodResolvers
指定されたMethodResolver
デリゲートがある場合はそれを返します。getBeanResolver
SimpleEvaluationContext
は、Bean 参照の使用をサポートしていません。- 次で指定:
- インターフェース
EvaluationContext
のgetBeanResolver
- 戻り値:
- 常に
null
getTypeLocator
SimpleEvaluationContext
は型参照の使用をサポートしていません。- 次で指定:
- インターフェース
EvaluationContext
のgetTypeLocator
- 戻り値:
-
SpelEvaluationException
をSpelMessage.TYPE_NOT_FOUND
で発生させるTypeLocator
実装
getTypeConverter
構成されたTypeConverter
。デフォルトでは、これは
StandardTypeConverter
です。getTypeComparator
StandardTypeComparator
のインスタンスを返します。- 次で指定:
- インターフェース
EvaluationContext
のgetTypeComparator
getOperatorOverloader
StandardOperatorOverloader
のインスタンスを返します。- 次で指定:
- インターフェース
EvaluationContext
のgetOperatorOverloader
assignVariable
SimpleEvaluationContext
は、式内での変数の割り当てをサポートしていません。- 次で指定:
- インターフェース
EvaluationContext
のassignVariable
- パラメーター:
name
- 割り当てる変数の名前valueSupplier
- 変数に割り当てられる値のサプライヤー- 戻り値:
- 割り当てられた値をラップする
TypedValue
- 例外:
SpelEvaluationException
-SpelMessage.VARIABLE_ASSIGNMENT_NOT_SUPPORTED
を使用する場合- 導入:
- 5.2.24
setVariable
この評価コンテキストの名前付き変数または関数を指定された値に設定します。関数は
Method
SE またはMethodHandle
SE として登録できます。この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。
- 次で指定:
- インターフェース
EvaluationContext
のsetVariable
- パラメーター:
name
- 設定する変数または関数の名前value
- 変数または関数に入れる値- 関連事項:
lookupVariable
この評価コンテキスト内で名前付き変数または関数を検索します。この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。
- 次で指定:
- インターフェース
EvaluationContext
のlookupVariable
- パラメーター:
name
- 検索する変数または関数の名前- 戻り値:
- 変数または関数の値、見つからない場合は
null
isAssignmentEnabled
public boolean isAssignmentEnabled()この評価コンテキストによって評価される式内で割り当てが有効になっているかどうかを判断します。このメソッドが
false
を返す場合、代入 (=
)、増分 (++
)、および減分 (--
) 演算子は無効になります。- 次で指定:
- インターフェース
EvaluationContext
のisAssignmentEnabled
- 戻り値:
- 割り当てが有効な場合は
true
、そうでない場合はfalse
- 導入:
- 5.3.38
- 関連事項:
forPropertyAccessors
指定されたPropertyAccessor
デリゲートのSimpleEvaluationContext
を作成します。通常は、ユースケースに固有のカスタムPropertyAccessor
です (たとえば、カスタムデータ構造の属性解決用)。プロパティの逆参照も必要な場合は、DataBindingPropertyAccessor
と組み合わせられる可能性があります。デフォルトでは、このファクトリメソッドを介して作成されたコンテキストによって評価される式内で割り当てが有効になっていますが、
SimpleEvaluationContext.Builder.withAssignmentDisabled()
を介して割り当てを無効にすることができます。forReadOnlyDataBinding
DataBindingPropertyAccessor
を介してパブリックプロパティに読み取り専用でアクセスするSimpleEvaluationContext
を作成します。このファクトリメソッドを介して作成されたコンテキストによって評価される式内では、割り当ては無効になります。
forReadWriteDataBinding
DataBindingPropertyAccessor
を介してパブリックプロパティへの読み取り / 書き込みアクセス用のSimpleEvaluationContext
を作成します。デフォルトでは、このファクトリメソッドを介して作成されたコンテキストによって評価される式内で割り当てが有効になっています。割り当ては
SimpleEvaluationContext.Builder.withAssignmentDisabled()
を介して無効にできますが、読み取り専用アクセスが必要な場合はforReadOnlyDataBinding()
を使用することをお勧めします。