SpringのDIコンテナ
自動でインスタンス生成してくれる
インスタンスのスコープを管理できる
DIコンテナを使うのに必要なこと
DIコンテナに使いたいインスタンスを登録する(Bean定義) DIコンテナに登録されているインスタンスを指定して取り出す(ルックアップ) DIコンテナの用語の整理
「Bean」:DIコンテナに登録するコンポーネント 「Bean定義」:DIコンテナにコンポーネントを登録すること インジェクションも同じ意味?
Bean定義の方法によってルックアップ(インジェクション)の仕方が異なる
クラス内のメソッドからインスタンス取得してインジェクション
インジェクションの種類(どこにインジェクションするか)
@Autowiredをつけた型がインタフェース型のときは、それを実装しているクラス型のインスタンスを生成する 状態を必要としないメソッドがあるとする
それはstaticメソッドにすればわざわざインスタンス生成が必要ない
しかし、内部でstaticメソッドを使用しているクラスはテストしづらい(置きかえられないので)
そこでDIコンテナを使ってインタフェース型のフィールドにDIすれば、「インスタンス生成不要」かつ「テストするときは実装クラスを切り替えればよいのでテストが用意になる」
public.icon