CDI 【Jakarta Contexts and Dependency Injection】

概要

CDI(Jakarta Contexts and Dependency Injection)とは、Java EE 6で追加された機能の一つで、Javaプログラム依存性注入(DIDependency Injection)など実行時動的な動作の変更をうことができるようにするもの。クラス間の依存関係の解決などをコード外でえるようにする。

ソースコード中に「@」で始まる特殊な指定(アノテーション)を記述することで、Java EE実行環境Webコンテナ)が実行時動的インスタンスの生成や破棄、注入などをう。実行環境には実行プログラムと共に依存関係の指定などを設定ファイルbeans.xml」が必要となる。

コンテキスト」はインスタンスの生成と破棄のタイミング、すなわちインスタンスが有効である期間(スコープ)を指定するもので、アノテーションによる指定で「一回のHTTPリクエストの間のみ有効」「一連のHTTPセッションの継続中は有効」といった指示をうことができる。

依存性注入」(DI)はクラス間の依存関係アノテーション設定ファイルの指定に基いてコンテナ実行時に解決する機能である。例えば、あるオブジェクトAがオブジェクトBの機能を利用する場合、通常はAの実装コード中でBをインスタンス化する処理を記述する

DIを用いる場合、実行時設定ファイルを参照して指定されたオブジェクトを使用するよう指示できる。これにより、AとBの関係は固定的でなくなり(疎結合)、Bの代わりにテスト用のTや互換性のあるCを使うといった変更をコードを書き換えずにうことができるようになる。

また、AOPアスペクト指向プログラミング)のための要素も取り込まれており、アノテーションにより「インターセプター」(interceptor)と呼ばれる特殊な処理を挿入することができる。これはメソッドの前や後に設定ファイルで指定した処理を実行するもので、ログ記録のように様々な場面に共通して現れる処理をプログラム本体から切り離して実装できるようになる。

JavaDIAOPを追加するフレームワークなどはそれまでも存在したが、CDIが標準仕様(JSR 299)となったことで様々な開発環境実行環境で同じアノテーション設定ファイルを共通して使用できるようになった。Java EE 7以降では標準で有効に設定されている。

(2021.9.15更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる