第11章 CDI
11.1. CDI の概要
11.1.1. CDI の概要
11.1.2. コンテキストと依存関係の注入 (CDI)
Contexts and Dependency Injection (CDI) は、EJB3.0 コンポーネントを JavaServer Faces (JSF) マネージド Bean として使用できるように設計された仕様であり、2 つのコンポーネントモデルを統合し、Web ベースのアプリケーションのプログラミングモデルを大幅に簡素化します。Java。 上記の引用は、JSR-299 仕様から引用したものです。http://www.jcp.org/en/jsr/detail?id=299。
JBoss EAP には、JSR-299 のリファレンス実装である Weld が含まれています。タイプセーフな依存性注入の詳細については、を参照してください。「タイプセーフな依存性注入について」。
11.1.3. CDI の利点
CDI の利点は次のとおりです。
- コードの大きなチャンクを注釈に置き換えることで、コードベースを簡素化および縮小します。
- 柔軟であり、インジェクションおよびイベントを無効または有効にしたり、代替の Bean を使用したり、非 CDI オブジェクトを簡単にインジェクトしたりできます。
- CDI で古いコードを使用するのは簡単です。
META-INF/
またはWEB-INF/
ディレクトリーにbeans.xml
を含めるだけで済みます。ファイルは空にすることができます。 - パッケージ化とデプロイメントを簡素化し、デプロイメントに追加する必要のある XML の量を削減します。
- コンテキストを介したライフサイクル管理を提供します。インジェクションを要求、セッション、会話、またはカスタムコンテキストに割り当てることができます。
- また、文字列ベースのインジェクションよりも安全かつ簡単にデバッグを行える、タイプセーフな依存関係の注入が提供されます。
- インターセプターを Bean から切り離します。
- 複雑なイベント通知を提供します。
11.1.4. タイプセーフな依存性注入について
JSR-299 および CDI の前は、Java に依存性を注入する唯一の方法は文字列を使用することでした。これはエラーが発生しがちでした。CDI には、タイプセーフな方法で依存性を注入する機能が導入されています。
CDI の詳細については、を参照してください。「コンテキストと依存関係の注入 (CDI)」。
11.1.5. Weld、Seam 2、および JavaServer Faces 間の関係
Seam 2 の目標は、Enterprise Java Beans (EJB) と JavaServer Faces (JSF) で管理される Bean を統合することでした。
JavaServer Faces (JSF) は JSR-314 を実装しています。これは、サーバーサイドユーザーインターフェースをビルドするための API です。JBoss Web Framework Kit には、JavaServerFaces と AJAX の実装である RichFaces が含まれています。
Weld は、JSR-299 で定義されている Contexts and Dependency Injection (CDI) のリファレンス実装です。Weld は、Seam2 およびその他の依存性注入フレームワークに触発されました。溶接は JBoss EAP 6 に含まれています。