依存性注入)機能を提供するフレームワークです。ソフトウェアの外部から提供できるようにするという考え方です。共有型TODO管理アプリケーションを例にすると、これまでは以下のようにActionがEntityManagerに直接アクセスしていました。この構造の場合、開発中など、データベースアクセスせず、仮のオブジェクトにアクセスするようにしたい場合はActionを修正しなければなりません。Actionはそのインタフェースに対してアクセスするように処理を実装します。DIコンテナは、インタフェースに対する実装の選択機能を提供します。実際のデータベースにアクセスできない環境でも開発をおこなえるようになります。DIコンテナには以下のようなものがあります。ここでは、Guiceを例にDIコンテナを使用してみましょう。SpringSeasarGuiceGuiceの概要Guiceは、Googleが開発・配布しているDIコンテナです。非常にシンプルな構造が特徴です。Guiceでオブジェクトを実装する場合、以下のようなクラスを作成する必要があります。依存オブジェクトのインタフェースを定義します。依存オブジェクトを定義します。サービスのインタフェースを実装する必要があります。サービスを使用するクラス。サービスのインタフェースのオブジェクトへの参照を持ちます。以下の手順でGuiceの処理を呼び出すことで、クライアントクラスとサービスの実装クラスの関連付けをおこなうことができます。Binderにサービスのインタフェースとサービスの実装クラスの対応付けを登録する。Injectorにクライアントクラスのインスタンス化を依頼する。このとき、クライアントクラスにはサービスの実装クラスのインスタンスが渡されます。Guiceを使った依存オブジェクト切り離しでは、実際にGuiceを利用してDIコンテナを利用したアプリケーションを実装してみましょう。作業項目テーブルにアクセスしている部分を依存部分として切り離してみましょう。