クラス SpelCompiler

java.lang.ObjectSE
org.springframework.expression.spel.standard.SpelCompiler
実装されたすべてのインターフェース:
Opcodes

public final class SpelCompiler extends ObjectSE implements Opcodes
SpelCompiler は、正規の解析済み式を受け取り、その式と同じことを行うバイトコードを含むクラスを作成(およびロード)します。式のコンパイルされた形式は、解釈された形式よりもはるかに速く評価されます。

SpelCompiler は現在すべての式型を処理しているわけではありませんが、一般的なケースの多くをカバーしています。フレームワークは、将来により多くのケースをカバーするために拡張可能です。絶対最大速度の場合、コンパイルされたコードには * チェック * がありません。式のコンパイルされたバージョンは、バイトコードを生成するときに、式の解釈された実行中に学習された情報を使用します。たとえば、特定のプロパティの逆参照が常にマップを返すように見える場合は、プロパティの逆参照の結果がマップであると想定するバイトコードを生成します。これにより最大のパフォーマンスが保証されますが、逆参照の結果がマップ以外の場合、コンパイルされた式は失敗します。通常の Java プログラムで予期しない型のデータを渡すと ClassCastException が発生します。

チェックがないため、たとえば、式がさまざまな型のデータを継続的に処理している場合など、コンパイルしてはならない式がいくつかある可能性があります。これらのケースのために、コンパイラーは(SpelParserConfiguration オブジェクトを介して)関連する SpelExpressionParser に対して選択的にオンにする必要があるものであり、デフォルトではオンになっていません。

SpelCompiler.compile(expression) を呼び出すことにより、個々の式をコンパイルできます。

導入:
4.1
作成者:
Andy Clement, Juergen Hoeller
  • メソッドの詳細

    • compile

      @Nullable public CompiledExpression compile(SpelNodeImpl expression)
      指定された式のコンパイルを試みます。コンパイルを続行する前に、コンパイル可能かどうかを確認するためのチェックが行われます。このチェックでは、式 AST 内のすべてのノードにアクセスし、それらについてバイトコードを生成できる十分な状態がわかっていることを確認します。
      パラメーター:
      expression - コンパイルする式
      戻り値:
      コンパイルされた式を実装するクラスのインスタンス、またはコンパイルが不可能な場合は null 
    • getCompiler

      public static SpelCompiler getCompiler(@Nullable ClassLoaderSE classLoader)
      コンパイラーインスタンスのファクトリメソッド。返された SpelCompiler は、クラスローダーを指定されたクラスローダーの子としてアタッチし、この子はコンパイルされた式をロードするために使用されます。
      パラメーター:
      classLoader - コンパイルのベースとして使用する ClassLoader
      戻り値:
      対応する SpelCompiler インスタンス
    • compile

      public static boolean compile(Expression expression)
      指定された式をコンパイルする試みが行われることをリクエストします。式のコンポーネントがコンパイルに適していない場合、または関係するデータ型がコンパイルに適していない場合、失敗する可能性があります。テストに使用されます。
      パラメーター:
      expression - コンパイルする式
      戻り値:
      式が正常にコンパイルされた場合は true、それ以外の場合は false 
    • revertToInterpreted

      public static void revertToInterpreted(Expression expression)
      式の評価のためにインタープリターに戻ることをリクエストします。コンパイルされたフォームはすべて破棄されますが、後で再コンパイルすることで再作成できます。
      パラメーター:
      expression - 表現