クラス StandardEvaluationContext

java.lang.ObjectSE
org.springframework.expression.spel.support.StandardEvaluationContext
実装されたすべてのインターフェース:
EvaluationContext
既知の直属サブクラス
MethodBasedEvaluationContext

public class StandardEvaluationContext extends ObjectSE implements EvaluationContext
強力で高度に構成可能な EvaluationContext 実装。

このコンテキストは、リフレクションに基づいてプロパティ、メソッド、フィールドを解決する、適用可能なすべての戦略の標準実装を使用します。ただし、SpEL 式パーサーが確実にユーザー型を見つけられるようにするには、特定の ClassLoaderSE を使用して StandardTypeLocator を手動で構成する必要がある場合があることに注意してください。詳細については、setTypeLocator(TypeLocator) を参照してください。

EvaluationContext API で定義されている変数の設定と検索のサポートに加えて、StandardEvaluationContext は関数の登録と検索のサポートも提供します。registerFunction(...) メソッドは、関数を MethodSE または MethodHandleSE として登録する便利な方法を提供します。ただし、関数は setVariable(String, Object) または setVariables(Map) を介して登録することもできます。この評価コンテキストでは関数は変数と名前空間を共有するため、関数名と変数名が重複しないように注意する必要があります。

データバインディングを目的とした、より単純なビルダースタイルのコンテキストバリアントの場合は、代わりに SimpleEvaluationContext を使用することを検討してください。これにより、特定のユースケースで必要に応じていくつかの SpEL 機能をオプトインできるようになります。

導入:
3.0
作成者:
Andy Clement, Juergen Hoeller, Sam Brannen, Stephane Nicoll
関連事項:
  • コンストラクターの詳細

    • StandardEvaluationContext

      public StandardEvaluationContext()
      null ルートオブジェクトを使用して StandardEvaluationContext を作成します。
    • StandardEvaluationContext

      public StandardEvaluationContext(@Nullable ObjectSE rootObject)
      指定されたルートオブジェクトで StandardEvaluationContext を作成します。
      パラメーター:
      rootObject - 使用するルートオブジェクト
      関連事項:
  • メソッドの詳細

    • setRootObject

      public void setRootObject(@Nullable ObjectSE rootObject, TypeDescriptor typeDescriptor)
    • setRootObject

      public void setRootObject(@Nullable ObjectSE rootObject)
    • getRootObject

      public TypedValue getRootObject()
      インターフェースからコピーされた説明: EvaluationContext
      修飾されていないプロパティ / メソッド / その他を解決する必要があるデフォルトのルートコンテキストオブジェクトを返します。これは、式を評価するときにオーバーライドできます。
      次で指定:
      インターフェース EvaluationContextgetRootObject 
    • setPropertyAccessors

      public void setPropertyAccessors(ListSE<PropertyAccessor> propertyAccessors)
    • getPropertyAccessors

      public ListSE<PropertyAccessor> getPropertyAccessors()
      インターフェースからコピーされた説明: EvaluationContext
      プロパティの読み取り / 書き込みを順番に要求されるアクセサーのリストを返します。
      次で指定:
      インターフェース EvaluationContextgetPropertyAccessors 
    • addPropertyAccessor

      public void addPropertyAccessor(PropertyAccessor accessor)
    • removePropertyAccessor

      public boolean removePropertyAccessor(PropertyAccessor accessor)
    • setConstructorResolvers

      public void setConstructorResolvers(ListSE<ConstructorResolver> constructorResolvers)
    • getConstructorResolvers

      public ListSE<ConstructorResolver> getConstructorResolvers()
      インターフェースからコピーされた説明: EvaluationContext
      コンストラクターを見つけるために順番に尋ねられるリゾルバーのリストを返します。
      次で指定:
      インターフェース EvaluationContextgetConstructorResolvers 
    • addConstructorResolver

      public void addConstructorResolver(ConstructorResolver resolver)
    • removeConstructorResolver

      public boolean removeConstructorResolver(ConstructorResolver resolver)
    • setMethodResolvers

      public void setMethodResolvers(ListSE<MethodResolver> methodResolvers)
    • getMethodResolvers

      public ListSE<MethodResolver> getMethodResolvers()
      インターフェースからコピーされた説明: EvaluationContext
      メソッドを見つけるために順番に要求されるリゾルバーのリストを返します。
      次で指定:
      インターフェース EvaluationContextgetMethodResolvers 
    • addMethodResolver

      public void addMethodResolver(MethodResolver resolver)
    • removeMethodResolver

      public boolean removeMethodResolver(MethodResolver methodResolver)
    • setBeanResolver

      public void setBeanResolver(BeanResolver beanResolver)
    • getBeanResolver

      @Nullable public BeanResolver getBeanResolver()
      インターフェースからコピーされた説明: EvaluationContext
      名前で Bean を検索できる Bean リゾルバーを返します。
      次で指定:
      インターフェース EvaluationContextgetBeanResolver 
    • setTypeLocator

      public void setTypeLocator(TypeLocator typeLocator)
      型の検索に使用する TypeLocator を、短縮名または完全修飾名で設定します。

      デフォルトでは、StandardTypeLocator が使用されます。

      注意 StandardTypeLocator で十分な場合でも、SpEL 式パーサーが確実にユーザー型を見つけられるようにするために、特定の ClassLoaderSE を使用して StandardTypeLocator を手動で構成する必要がある場合があります。

      パラメーター:
      typeLocator - 使用する TypeLocator 
      関連事項:
    • getTypeLocator

      public TypeLocator getTypeLocator()
      型を検索するために使用される構成済みの TypeLocator を、短縮名または完全修飾名で取得します。

      詳細については、setTypeLocator(TypeLocator) を参照してください。

      次で指定:
      インターフェース EvaluationContextgetTypeLocator 
      関連事項:
    • setTypeConverter

      public void setTypeConverter(TypeConverter typeConverter)
    • getTypeConverter

      public TypeConverter getTypeConverter()
      インターフェースからコピーされた説明: EvaluationContext
      値をある型から別の型に変換(または強制)できる型コンバーターを返します。
      次で指定:
      インターフェース EvaluationContextgetTypeConverter 
    • setTypeComparator

      public void setTypeComparator(TypeComparator typeComparator)
    • getTypeComparator

      public TypeComparator getTypeComparator()
      インターフェースからコピーされた説明: EvaluationContext
      オブジェクトのペアが等しいかどうかを比較するための型コンパレータを返します。
      次で指定:
      インターフェース EvaluationContextgetTypeComparator 
    • setOperatorOverloader

      public void setOperatorOverloader(OperatorOverloader operatorOverloader)
    • getOperatorOverloader

      public OperatorOverloader getOperatorOverloader()
      インターフェースからコピーされた説明: EvaluationContext
      標準の型のセット以外のものの間の数学演算をサポートする可能性のある演算子オーバーローダーを返します。
      次で指定:
      インターフェース EvaluationContextgetOperatorOverloader 
    • setVariable

      public void setVariable(@Nullable StringSE name, @Nullable ObjectSE value)
      この評価コンテキストの名前付き変数を指定された値に設定します。

      指定された name が null の場合、無視されます。指定された value が null の場合、名前付き変数はこの評価コンテキストから削除されます。

      EvaluationContext.assignVariable(String,java.util.function.Supplier) とは対照的に、このメソッドは、EvaluationContext と直接対話する場合にのみプログラムで呼び出す必要があります。— たとえば、コンテキストの初期構成を提供します。

      この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。

      次で指定:
      インターフェース EvaluationContextsetVariable 
      パラメーター:
      name - 設定する変数の名前
      value - 変数に入れられる値
      関連事項:
    • setVariables

      public void setVariables(MapSE<StringSE,ObjectSE> variables)
      この評価コンテキスト内の複数の名前付き変数を指定された値に設定します。

      これは、setVariable(String, Object) の簡易版です。

      この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。

      パラメーター:
      variables - 設定する変数の名前と値
      関連事項:
    • registerFunction

      public void registerFunction(StringSE name, MethodSE method)
      指定した MethodSE を SpEL 関数として登録します。

      この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。

      パラメーター:
      name - 関数の名前
      method - 登録する Method 
      関連事項:
    • registerFunction

      public void registerFunction(StringSE name, MethodHandleSE methodHandle)
      指定した MethodHandleSE を SpEL 関数として登録します。

      この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。

      パラメーター:
      name - 関数の名前
      methodHandle - 登録する MethodHandleSE
      導入:
      6.1
      関連事項:
    • lookupVariable

      @Nullable public ObjectSE lookupVariable(StringSE name)
      この評価コンテキスト内で名前付き変数または関数を検索します。

      この評価コンテキストでは、変数と関数が共通の名前空間を共有することに注意してください。詳細については、クラスレベルのドキュメントを参照してください。

      次で指定:
      インターフェース EvaluationContextlookupVariable 
      パラメーター:
      name - 検索する変数または関数の名前
      戻り値:
      変数または関数の値、見つからない場合は null 
    • registerMethodFilter

      public void registerMethodFilter(ClassSE<?> type, MethodFilter filter) throws IllegalStateExceptionSE
      指定された型のメソッド解決中に呼び出される MethodFilter を登録します。

      MethodFilter はメソッドを削除したり、メソッドをソートしたりして、SpEL が一致を探す候補として SpEL で使用するようにします。

      パラメーター:
      type - フィルターを呼び出す型
      filter - 型のフィルターの登録を解除する MethodFilter または null 
      例外:
      IllegalStateExceptionSE - ReflectiveMethodResolver が使用されていない場合
    • applyDelegatesTo

      public void applyDelegatesTo(StandardEvaluationContext evaluationContext)
      このインスタンスの内部デリゲートを指定された evaluationContext に適用します。通常、デリゲートを再利用するために新しいコンテキストインスタンスが作成された直後に呼び出されます。ルートオブジェクトや登録された変数や関数は変更されません。
      パラメーター:
      evaluationContext - 更新する評価コンテキスト
      導入:
      6.1.1