DIコンテナに、Java Configクラスを使用してコンポーネントを登録する方法を書いてみました!
Java Configクラス
DIコンテナに対してコンポーネントを登録するための、設定クラス。ここで設定したコンポーネントが、DIコンテナに登録される。
@Configuration
public class AppConfig {
@Bean
UserRepository userRepository() {
return new UserRepositoryImpl();
}
}
ルックアップ
ルックアップとはDIコンテナからBeanを取得すること。
取得方法
1つ目はBeanの型(UserRepository)を指定する方法。指定した型を持つBeanが1つだけ存在する場合に使用する。今回は、Java Configクラスで設定したUserRepository型は1つだけなので、これで取得できる。
UserRepository userRepository = context.getBean(UserRepository.class);
2つ目はBeanの型と名前を指定する方法。指定した型が複数ある場合に使用する。
下記のようにUserRepository型が複数あった場合、型を指定するだけではどちらか判断できない。
@Configuration
public class AppConfig {
@Bean
UserRepository userRepository() {
return new UserRepositoryImpl();
}
@Bean
UserRepository userRepositorySecond() {
return new UserRepositorySecondImpl();
}
}
なので名前と型を指定する。
UserRepository userRepository = context.getBean("userRepositorySecond",UserRepository.class);
もう一つObject型で取得してキャストする方法があるみたいですが、省略します。
終わり
DIコンテナにコンポーネントを登録して取得する方法でした!
間違いなどがあれば、遠慮なくご指摘ください