基本的な事項は省略
DIの目的について
①POJOの利用
②DIコンテナからnew演算子を消す
⇒FactoryMethodなどのデザインパターンの排除
③DIコンテナから渡されるインスタンスをインタフェースで受け取る
⇒インタフェースのコンポーネント化
⇒クラス(インタフェースの実装)が変更・拡張されても、それを利用しているクラスのへの影響範囲を極小化できる。
⇒利用しているクラス(インタフェースの実装)を置き換えてもテストが可能。
DIの利用範囲
①コントローラとサービスとの依存関係
②サービスとDAOとの依存関係
アノテーションとDI
①インスタンス変数の前に@Autowiredをつけると、DIコンテナがそのインスタンス変数の型に代入できるクラスを@Componentがついているクラスの中から見つける
⇒インジェクションをする
⇒インスタンス変数以外にメソッド宣言前でも可能
②DI方法はXML定義
⇒Bean定義ファイルが必要
@Autowired、@Resourceを利用する場合の宣言
@Conpmnent、@Serviceなどのコンポーネントを利用する場合の宣言
③インジェクション可能なクラスは1個
⇒複数名がある場合、@Qualifierを使用する(@Componentに名前を使用する)
⇒Bean定義ファイルを利用する