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

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.