Spring 3.0: DI で自動注入
また間があいたが気にしない。
01/29 の記事では、アノテーションを利用してDIコンテナにJavaインスタンスを登録する方法について勉強しました。今回は、登録したBeanを自動的に注入する方法です。
リファレンスではだいたいこの辺りに書いてあります。
- とにかく@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」がわかれば十分か、と。