第9章 CDI
9.1. CDI の概要 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
9.1.1. CDI の概要 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
9.1.2. コンテキストと依存性の注入 (CDI) リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンテキストと依存性の注入 (CDI: Contexts and Dependency Injection) は、EJB 3.0 コンポーネントを Java Server Faces (JSF) 管理対象 Bean として使用できるよう設計された仕様であり、2 つのコンポーネントモデルを統合し、Java を使用した Web ベースのアプリケーション向けプログラミングモデルを大幅に簡略化します。先行する引用符は JSR-299 仕様から除外されました (http://www.jcp.org/en/jsr/detail?id=299 を参照)。
JBoss EAP 6 には、JSR-299 の参照実装である Weld が含まれます。タイプセーフの依存性注入に関する詳細は、「タイプセーフの依存性の注入」を参照してください。
9.1.3. CDI の利点 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
- CDI を使用すると、多くのコードをアノテーションに置き換えることにより、コードベースが単純化および削減されます。
- CDI は柔軟であり、CDI を使用すると、インジェクションおよびイベントを無効または有効にしたり、代替の Bean を使用したり、非 CDI オブジェクトを簡単にインジェクトしたりできます。
- CDI で古いコードを使用することは簡単です。これを行うには
beans.xml
をMETA-INF/
またはWEB-INF/
ディレクトリーに配置します。このファイルは空白である場合があります。 - CDI を使用すると、パッケージ化とデプロイメントが簡略化され、デプロイメントに追加する必要がある XML の量が減少します。
- CDI により、コンテキストを使用したライフサイクル管理が提供されます。インジェクションを要求、セッション、会話、またはカスタムコンテキストに割り当てできます。
- また、CDI により、文字列ベースのインジェクションよりも安全かつ簡単にデバッグを行える、タイプセーフな依存性の注入が提供されます。
- CDI はインターセプターと Bean を切り離します。
- CDI では、複雑なイベント通知も提供されます。
9.1.4. タイプセーフの依存性の注入 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JSR-299 および CDI 以前は、Java で依存性を注入するには文字列を使う方法しかありませんでした。この方法では間違いが起きやすいため、CDI によりタイプセーフな方法で依存性を注入する機能が導入されました。
CDI の詳細については、「コンテキストと依存性の注入 (CDI)」を参照してください。
9.1.5. Weld、Seam 2、および JavaServer Faces 間の関係 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Seam 2 の目的は、Enterprise Java Bean (EJB) と JavaServer Faces (JSF) 管理対象 Bean を統合することでした。
JavaServer Faces (JSF) は、JSR-314 を実装します。これは、サーバーサイドユーザーインターフェースを構築するための API です。JBoss Web Framework Kit には、JavaServer Faces と AJAX の実装であるRichFaces が含まれます。
Weld は、JSR-299 で定義されている コンテキストと依存性の注入 (CDI: Contexts and Dependency Injection) の参照実装です。Weld は、Seam 2 と他の依存性注入フレームワークの影響を受けています。Weld は、JBoss EAP 6 に含まれています。