パッケージ jakarta.enterprise.inject.spi
ポータブル拡張統合 SPI。
ポータブル拡張機能は、次の方法でコンテナーと統合できます。
- コンテナーに独自の Bean、インターセプター、デコレーターを提供する
- 依存性注入サービスを使用して依存関係を独自のオブジェクトに注入する
- カスタムスコープのコンテキスト実装を提供する
- アノテーションベースのメタデータを他のソースからのメタデータで拡張または上書きする
BeanManager
オブジェクト
ポータブル拡張機能は、プログラムによる API 呼び出しを介してコンテナーと直接やり取りすることがあります。インターフェース BeanManager
は、Bean のコンテキスト参照を取得するための操作と、ポータブル拡張機能を使用するための他の多くの操作を提供します。
コンテナーライフサイクルイベント
アプリケーションの初期化プロセス中に、コンテナーは一連のイベントを発生させ、ポータブル拡張機能をコンテナーの初期化プロセスと統合できるようにします。これらのイベントのオブザーバーメソッドは、META-INF/services
で宣言された拡張機能に属している必要があります。
ライフサイクルイベントには、BeforeBeanDiscovery
、AfterBeanDiscovery
、AfterDeploymentValidation
および BeforeShutdown
が含まれます。
有効な Bean を表すインターフェース
インターフェース Bean
、Decorator
、Interceptor
および 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
の実装を独自の実装に置き換えることができます。
インターフェースのサマリー インターフェース 説明 AfterBeanDiscovery Bean 検出プロセスが完全に完了し、検出された Bean に関連する定義エラーがないことを検証し、検出された Bean のBean
およびObserverMethod
オブジェクトを登録したが、デプロイの問題を検出する前に、コンテナーによって起動される 2 番目のイベントのイベント型。AfterDeploymentValidation コンテナーがデプロイの問題がないことを検証した後で、コンテキストを作成するか、リクエストを処理する前にコンテナーによって発生した 3 番目のイベントのイベント型。AfterTypeDiscovery このイベント型は、型の検出が完了した後にコンテナーによってスローされます。Annotated アノテーションを付けることができる Java プログラム要素を表します。AnnotatedCallable<X> Java 型の呼び出し可能なメンバーを表します。AnnotatedConstructor<X> Java クラスのコンストラクターを表します。AnnotatedField<X> Java クラスのフィールドを表します。AnnotatedMember<X> Java 型のメンバーを表します。AnnotatedMethod<X> Java 型のメソッドを表します。AnnotatedParameter<X> メソッドまたはコンストラクターのパラメーターを表します。AnnotatedType<X> Java クラスまたはインターフェースを表します。Bean<T> 有効な Bean を表します。BeanAttributes<T> BeanAttributes インターフェースは、Bean の基本的な属性を公開します。BeanContainer BeanContainer
は、すべての CDI 環境で移植可能な機能を含むBeanManager
のスーパークラスです。BeanManager ポータブル拡張機能がコンテナーと直接やり取りできるようにします。BeforeBeanDiscovery このイベント型は、Bean ディスカバリプロセスが開始する前にコンテナーによってスローされます。BeforeShutdown コンテナーがリクエストの処理を完了し、すべてのコンテキストを破棄した後に発生する最後のイベントの型。CDIProvider 現在のコンテナーへのアクセスを提供するために CDI プロバイダーによって実装されたインターフェースDecorator<T> 有効なデコレータを表します。EventContext<T> 発生したイベントのコンテキストを表します。EventMetadata 監視対象のイベントペイロードに関するメタデータへのアクセスを提供します。Extension 拡張機能によって実装されるサービスインターフェース。InjectionPoint インジェクションポイントに関するメタデータへのアクセスを提供します。InjectionTarget<T> 型のインスタンスに対して依存関係の挿入とライフサイクルコールバックを実行するための操作を提供します。InjectionTargetFactory<T> InjectionTargetFactory
は、特定の Bean のInjectionTarget
を作成できます。InterceptionFactory<T> InterceptionFactory
を使用すると、メソッド呼び出しがメソッドインターセプターによってインターセプトされ、提供されたインスタンスに転送されるラッパーインスタンスを作成できます。Interceptor<T> 有効なインターセプターを表します。ObserverMethod<T> PassivationCapable Bean
またはContextual
のカスタム実装がパッシベーション対応であることを示します。Prioritized このインターフェースを使用すると、一部の SPI 実装でプログラムによって優先順位を変更できます。ProcessAnnotatedType<X> コンテナーは、宣言されたアノテーションを読み取る前に、Bean アーカイブで検出した Java クラスまたはインターフェースごとに、この型のイベントを発生させます。ProcessBean<X> コンテナーは、Bean
オブジェクトを登録する前に、Bean アーカイブにデプロイされた有効な Bean、インターセプター、デコレーターごとにこの型のイベントを発生させます。ProcessBeanAttributes<T> コンテナーは、Bean
オブジェクトを登録する前に、Bean アーカイブにデプロイされた有効な Bean、インターセプタ、デコレータごとにこの型のイベントを発生させます。ProcessInjectionPoint<T,X> コンテナーは、jakarta.annotation.ManagedBean
、EJB セッション、メッセージ駆動型 Bean、有効化 Bean、有効化インターセプタを使用して宣言されたすべてのマネージド Bean を含む、実行時にコンテナーによってインスタンス化される可能性のあるインジェクションをサポートするすべての Java EE コンポーネントクラスのすべてのインジェクションポイントに対してこの型のイベントを発生させます。または有効なデコレータ。ProcessInjectionTarget<X> コンテナーは、jakarta.annotation.ManagedBean
、EJB セッションまたはメッセージ駆動型 Bean、有効な Bean、有効なインターセプタ、有効なデコレータを使用して宣言されたすべてのマネージド Bean を含む、実行時にコンテナーによってインスタンス化される可能性のあるインジェクションをサポートするすべての Java EE コンポーネントクラスに対してこの型のイベントを発生させます。ProcessManagedBean<X> コンテナーは、Bean
オブジェクトを登録する前に、有効になっている管理対象の Bean ごとにこの型のイベントを発生させます。ProcessObserverMethod<T,X> コンテナーは、ObserverMethod
オブジェクトを登録する前に、有効な Bean ごとのオブザーバーメソッドごとにこの型のイベントを発生させます。ProcessProducer<T,X> コンテナーは、リソースを含む、有効になっている Bean ごとに、プロデューサーメソッドまたはフィールドごとにこの型のイベントを発生させます。ProcessProducerField<T,X> コンテナーは、Bean
オブジェクトを登録する前に、有効なプロデューサーフィールドごとにこの型のイベントを発生させます。ProcessProducerMethod<T,X> コンテナーは、Bean
オブジェクトを登録する前に、有効なプロデューサーメソッドごとにこの型のイベントを発生させます。ProcessSessionBean<X> コンテナーは、Bean
オブジェクトを登録する前に、有効なセッション Bean ごとにこの型のイベントを発生させます。ProcessSyntheticAnnotatedType<X> コンテナーは、BeforeBeanDiscovery.addAnnotatedType(AnnotatedType, String)
またはAfterTypeDiscovery.addAnnotatedType(AnnotatedType, String)
によって追加された Java クラスまたはインターフェースごとに、この型のイベントを発生させます。ProcessSyntheticBean<X> コンテナーは、Bean
オブジェクトを登録する前に、AfterBeanDiscovery.addBean()
またはAfterBeanDiscovery.addBean(Bean)
によって追加されたカスタム Bean 実装ごとにこの型のイベントを発生させます。ProcessSyntheticObserverMethod<T,X> コンテナーは、ObserverMethod
オブジェクトを登録する前に、AfterBeanDiscovery.addObserverMethod(ObserverMethod)
またはAfterBeanDiscovery.addObserverMethod()
によって追加されたObserverMethod
のカスタム実装ごとにこの型のイベントを発生させます。Producer<T> 型のインスタンスを生成するための一般的な操作を提供します。ProducerFactory<X> ProducerFactory
は、特定の Bean のProducer
を作成できます。クラスのサマリー クラス 説明 CDI<T> 現在のコンテナーへのアクセスを提供します。Unmanaged<T> フレームワークおよびライブラリインテグレーターが使用するライフサイクルコールバックのアンマネージインスタンスを挿入および呼び出すためのヘルパークラス。Unmanaged.UnmanagedInstance<T> 非コンテキストインスタンスを表します。列挙型のサマリー 列挙型 説明 InterceptionType ライフサイクルコールバック、EJB タイムアウトメソッド、ビジネスメソッドインターセプトの種類を識別します。SessionBeanType EJB セッション Bean の種類を識別します。例外のサマリー 例外 説明 DefinitionException 定義エラーが発生した場合にスローされます。DeploymentException デプロイ問題が発生したときにスローされます。アノテーション型のサマリー アノテーション型 説明 WithAnnotations WithAnnotations
は、ProcessAnnotatedType
のイベントパラメーター型を持つ任意のポータブル拡張オブザーバメソッドに適用して、配信されるイベントをフィルタリングできます。