Java EE 6 Bean 管理: @ManagedBean、@Inject、@Named の包括的なガイド
Java EE 6 では、無数のBean 管理と依存関係の注入のためのアノテーションがあり、多少の混乱を引き起こしています。このガイドは、@javax.annotation.ManagingBean、@javax.inject.Named、@javax.faces.ManagingBean、および @javax.inject.Inject の複雑さを解明し、明確な使用ガイドラインを確立することを目的としています。
Java EE 6 の Bean タイプを理解する
マネージド Bean は、ライフサイクルがコンテナによって管理されるオブジェクトです。 Java EE 6 は、独自の Bean タイプを管理するさまざまなコンテナを備えています:
各アノテーションを使用する場合
@javax.annotation.ManagingBean
このアノテーションは、EJB コンテナによって管理される Bean を宣言します。これは、EJB アプリケーション用のマネージド Bean を作成するために使用されます。
@javax.inject.Named と @javax.faces.ManagingBean
どちらのアノテーションも、作成できる Bean を識別します。名前で参照されます。 @javax.inject.Named は CDI Bean と EJB Bean に使用されますが、@javax.faces.ManagedBean は特に JSF Bean に使用されます。
@javax .inject.Inject
このアノテーションは、CDI および EJB コンテキストでの依存関係の注入に使用されます。 Bean を他の Bean に注入し、必要な依存関係にアクセスできるようにします。
使用例
EJB:
@Stateless @ManagedBean public class MyEJB { ... }
CDI:
@Named("myBean") @RequestScoped public class MyBean { @Inject private MyService service; ... }
JSF:
@ManagedBean(name="myManagedBean") @RequestScoped public class MyManagedBean { ... }
適切な Bean の選択
CDI サポートのないサーブレット コンテナに必要な場合を除き、@javax.faces.ManagingBean を使用しないでください。
の高度な機能が必要な場合を除き、ほとんどのシナリオでは CDI Bean を使用します EJB はトランザクション管理や状態保存に似ています。
リモートまたはローカル EJB にアクセスし、分散トランザクションを管理し、高度なエンタープライズ機能を利用する必要がある場合は、EJB を使用します。
CDI で @ViewScoped をサポートするには、 Seam-faces や MyFaces CODI などの互換性のあるライブラリを使用するか、 @ViewAccessScoped または @ConversationScoped を選択することを検討してください。
以上がBean 管理と依存関係の注入にはどの Java EE 6 アノテーションを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。