パッケージ jakarta.enterprise.inject.spi


パッケージ jakarta.enterprise.inject.spi

ポータブル拡張統合 SPI。

ポータブル拡張機能は、次の方法でコンテナーと統合できます。

  • コンテナーに独自の Bean、インターセプター、デコレーターを提供する
  • 依存性注入サービスを使用して依存関係を独自のオブジェクトに注入する
  • カスタムスコープのコンテキスト実装を提供する
  • アノテーションベースのメタデータを他のソースからのメタデータで拡張または上書きする

BeanManager オブジェクト

ポータブル拡張機能は、プログラムによる API 呼び出しを介してコンテナーと直接やり取りすることがあります。インターフェース BeanManager は、Bean のコンテキスト参照を取得するための操作と、ポータブル拡張機能を使用するための他の多くの操作を提供します。

コンテナーライフサイクルイベント

アプリケーションの初期化プロセス中に、コンテナーは一連のイベントを発生させ、ポータブル拡張機能をコンテナーの初期化プロセスと統合できるようにします。これらのイベントのオブザーバーメソッドは、META-INF/services で宣言された拡張機能に属している必要があります。

ライフサイクルイベントには、BeforeBeanDiscoveryAfterBeanDiscoveryAfterDeploymentValidation および BeforeShutdown が含まれます。

有効な Bean を表すインターフェース

インターフェース BeanDecoratorInterceptor および ObserverMethod は、コンテナーが Bean、インターセプター、デコレーターまたはオブザーバーメソッドのインスタンスを管理するために必要なすべてのものを定義します。

Bean のインスタンスは、有効な Bean ごとに存在します。ポータブル拡張機能は、Bean を実装し、Bean をコンテナーに登録するイベント AfterBeanDiscovery イベントを監視することにより、新しい種類の Bean のサポートを追加する場合があります。ObserverMethod のインスタンスは、有効になっているすべての Bean のすべてのオブザーバーメソッドに存在します。ポータブル拡張機能は、ObserverMethod を実装し、インスタンスをコンテナーに登録することにより、オブザーバーを追加できます。

ポータブル拡張機能は、コンテナーライフサイクルイベント型 ProcessBean またはそのサブ型の 1 つを監視することによって有効な Bean の存在を通知されるか、イベント型 ProcessObserverMethod を監視することによって有効な Bean のオブザーバーメソッドの存在を通知されます。

代替メタデータソース

ポータブル拡張機能は、XML による構成などの代替メタデータソースを提供する場合があります。

Annotated とそのサブ型により、ポータブル拡張機能は、Bean クラスに存在するアノテーションをオーバーライドするメタデータを指定できます。ポータブル拡張機能は、インターフェースの実装を担当し、それによってメタデータをコンテナーに公開します。コンテナーは、Java Reflection API を直接呼び出すのではなく、Annotated とそのサブインターフェースの操作を使用して、プログラム要素の型とアノテーションを検出する必要があります。

ポータブル拡張機能は、イベント ProcessAnnotatedType を監視し、AnnotatedTypeラップすることによって、そのメタデータをコンテナーに提供します。

Producer および InjectionTarget

インターフェース Producer および InjectionTarget は、インスタンス化と破棄、依存性注入、ライフサイクルコールバックを含む、(コンテキストまたは非コンテキスト)コンテナー管理オブジェクトの基本的なライフサイクルを抽象化します。

InjectionTarget のインスタンスは、BeanManager から取得された BeanManager.getInjectionTargetFactory(AnnotatedType) の製品である可能性があり、ポータブル拡張は、ポータブル拡張の制御下にあるオブジェクトに対してこれらのコンテナーサービスをリクエストできます。

さらに、ポータブル拡張機能では、イベント ProcessInjectionTarget または ProcessProducer を監視することにより、コンテナーで使用される InjectionTarget または Producer の実装を独自の実装に置き換えることができます。

関連事項:
  • クラス
    説明
    Bean 検出プロセスが完全に完了し、検出された Bean に関連する定義エラーがないことを検証し、検出された Bean の Bean および ObserverMethod オブジェクトを登録したが、デプロイの問題を検出する前に、コンテナーによって起動される 2 番目のイベントのイベント型。
    コンテナーがデプロイの問題がないことを検証した後で、コンテキストを作成するか、リクエストを処理する前にコンテナーによって発生した 3 番目のイベントのイベント型。
    このイベント型は、型の検出が完了した後にコンテナーによってスローされます。
    アノテーションを付けることができる Java プログラム要素を表します。
    Java 型の呼び出し可能なメンバーを表します。
    Java クラスのコンストラクターを表します。
    Java クラスのフィールドを表します。
    Java 型のメンバーを表します。
    Java 型のメソッドを表します。
    メソッドまたはコンストラクターのパラメーターを表します。
    Java クラスまたはインターフェースを表します。
    Bean<T>
    有効な Bean を表します。
    BeanAttributes インターフェースは、Bean の基本的な属性を公開します。
    BeanContainer は、すべての CDI 環境で移植可能な機能を含む BeanManager のスーパークラスです。
    ポータブル拡張機能がコンテナーと直接やり取りできるようにします。
    このイベント型は、Bean ディスカバリプロセスが開始する前にコンテナーによってスローされます。
    コンテナーがリクエストの処理を完了し、すべてのコンテキストを破棄した後に発生する最後のイベントの型。
    CDI<T>
    現在のコンテナーへのアクセスを提供します。
    現在のコンテナーへのアクセスを提供するために CDI プロバイダーによって実装されたインターフェース
    有効なデコレータを表します。
    定義エラーが発生した場合にスローされます。
    デプロイ問題が発生したときにスローされます。
    発生したイベントのコンテキストを表します。
    監視対象のイベントペイロードに関するメタデータへのアクセスを提供します。
    拡張機能によって実装されるサービスインターフェース。
    インジェクションポイントに関するメタデータへのアクセスを提供します。
    型のインスタンスに対して依存関係の挿入とライフサイクルコールバックを実行するための操作を提供します。
    InjectionTargetFactory は、特定の Bean の InjectionTarget を作成できます。
    InterceptionFactory を使用すると、メソッド呼び出しがメソッドインターセプターによってインターセプトされ、提供されたインスタンスに転送されるラッパーインスタンスを作成できます。
    ライフサイクルコールバック、EJB タイムアウトメソッド、ビジネスメソッドインターセプトの種類を識別します。
    Bean または Contextual のカスタム実装がパッシベーション対応であることを示します。
    このインターフェースを使用すると、一部の SPI 実装でプログラムによって優先順位を変更できます。
    コンテナーは、宣言されたアノテーションを読み取る前に、Bean アーカイブで検出した Java クラスまたはインターフェースごとに、この型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、Bean アーカイブにデプロイされた有効な Bean、インターセプター、デコレーターごとにこの型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、Bean アーカイブにデプロイされた有効な Bean、インターセプタ、デコレータごとにこの型のイベントを発生させます。
    コンテナーは、すべての EJB セッションまたはメッセージ駆動型 Bean、有効な Bean、有効なインターセプタ、有効なデコレータを含む、実行時にコンテナーによってインスタンス化される可能性のある、注入をサポートするすべての Java EE コンポーネントクラスのすべてのインジェクションポイントに対して、この型のイベントを発生させます。
    コンテナーは、EJB セッションまたはメッセージ駆動型 Bean、有効な Bean、有効なインターセプター、有効なデコレータなど、実行時にコンテナーによってインスタンス化される可能性のある、注入をサポートするすべての Java EE コンポーネントクラスに対して、この型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、有効になっている管理対象の Bean ごとにこの型のイベントを発生させます。
    コンテナーは、ObserverMethod オブジェクトを登録する前に、有効な Bean ごとのオブザーバーメソッドごとにこの型のイベントを発生させます。
    コンテナーは、リソースを含む、有効になっている Bean ごとに、プロデューサーメソッドまたはフィールドごとにこの型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、有効なプロデューサーフィールドごとにこの型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、有効なプロデューサーメソッドごとにこの型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、有効なセッション Bean ごとにこの型のイベントを発生させます。
    コンテナーは、BeforeBeanDiscovery.addAnnotatedType(AnnotatedType, String) または AfterTypeDiscovery.addAnnotatedType(AnnotatedType, String) によって追加された Java クラスまたはインターフェースごとに、この型のイベントを発生させます。
    コンテナーは、Bean オブジェクトを登録する前に、AfterBeanDiscovery.addBean() または AfterBeanDiscovery.addBean(Bean) によって追加されたカスタム Bean 実装ごとにこの型のイベントを発生させます。
    コンテナーは、ObserverMethod オブジェクトを登録する前に、AfterBeanDiscovery.addObserverMethod(ObserverMethod) または AfterBeanDiscovery.addObserverMethod() によって追加された ObserverMethod のカスタム実装ごとにこの型のイベントを発生させます。
    型のインスタンスを生成するための一般的な操作を提供します。
    ProducerFactory は、特定の Bean の Producer を作成できます。
    EJB セッション Bean の種類を識別します。
    フレームワークおよびライブラリインテグレーターが使用するライフサイクルコールバックのアンマネージインスタンスを挿入および呼び出すためのヘルパークラス。
    非コンテキストインスタンスを表します。
    WithAnnotations は、ProcessAnnotatedType のイベントパラメーター型を持つ任意のポータブル拡張オブザーバメソッドに適用して、配信されるイベントをフィルタリングできます。