DIコンテナ・@Autowired・@Component

DIコンテナ

DIとは「Dependency Injection」を省略したもの。意味は「依存性の注入」。
DIは、オブジェクト間の依存関係を作成する。
依存関係とは、クラス外でインスタンスを生成して、外から渡すこと。


DIコンテナとは、DIした時に、毎回依存性のあるものを生成、注入、生成... という繰り返しをなくすために、
その依存性を定義して、コンテナという形で保存しておけば、
コンテナを渡すだけで、依存関係が整っているものをGetできる仕組み。
つまり、Diコンテナ = DIした依存関係が管理されたもの




@Autowired

直訳すると「自動紐付け」。
インジェクションしてもらうための設定。

DIコンテナがその変数の型に代入できるクラスを、@Componentの付いているクラスから探し出し、インジェクション(注入)してくれる。
普通、DIはどのフィールドにどのBeanを代入するかを設定によって明示する必要があるが、
@Autowiredを使うと、DIすべきBeanを自動的に判断して代入してくれる。

@Autowiredと@Componentはセット。




@Component

インターフェイスに対応した実クラスをコンポーネント化(部分化)。
DIコンテナにbeanとして登録したいクラスへ付与する。

@Component = bean定義を省略する
@Autowired = DIコンテナからbeanを引っ張り出して注入する