ナビゲーションリンクをスキップ

Jakarta EE 8 仕様 API

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

ポータブル拡張統合 SPI。

参照先: 説明

パッケージ javax.enterprise.inject.spi の説明

ポータブル拡張統合 SPI。

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

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 リフレクション API を直接呼び出すのではなく、 Annotated とそのサブインターフェースの操作を使用して、プログラム要素の型とアノテーションを検出する必要があります。

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

プロデューサーおよび InjectionTarget

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

InjectionTarget のインスタンスは BeanManager から取得できます。これにより、ポータブル拡張機能は、ポータブル拡張機能の制御下にあるオブジェクトのこれらのコンテナーサービスをリクエストできます。

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

関連事項:
javax.enterprise.inject, javax.enterprise.context.spi

Jakarta EE 8 仕様 API

Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.