Spring 3.0: DI で自動注入

また間があいたが気にしない。

01/29 の記事では、アノテーションを利用してDIコンテナにJavaインスタンスを登録する方法について勉強しました。今回は、登録したBeanを自動的に注入する方法です。

リファレンスではだいたいこの辺りに書いてあります。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-annotation-config

  • とにかく@Autowired。これで、同じ型のBeanがコンテナに登録されていたらそれが注入される
    • メソッドに@Autowired って書いてあったら、引数に自動注入。
    • コンストラクタに@Autowired って書いてあっても、引数に自動注入
    • フィールドに@Autowired と記述されてたら、初期化時に自動注入される。privateでもOK。
    • 引数がCollectionでもDIされる
    • 引数がMapであったとしても、キーがString なら自動注入される
  • 候補となるBeanがコンテナに何もない場合は初期化に失敗する。これは@Autowiredのrequiredがtrue1だから。falseに設定すれば成功する
    • @Autowired(required=true)に設定できるコンストラクタは一クラス一つ。
  • Beanの候補が複数ある場合は、@Qualifierを利用して何を注入するか指定する。
  • @PostConstruct / @PreDestroy

@Qualify についてはリファレンスにもう少し詳しく書いてありますが、ここは「@Autowired」がわかれば十分か、と。