実際、そのようなユースケースはたくさんあります。特定のサービスBeanからアクセスする必要があるオーセンティケータークラスを作成するとします。これで、オーセンティケータークラスはSpringコンテキストを介して既に構成されています。では、どのようにしてそのBeanにアクセスしますか?答えは、SpringApplicationContextを介したものです。
class MyClass implements ApplicationContextAware {
private ApplicationContext context;
@Override
void setApplicationContext(ApplicationContext context) throws BeansException {
this.context = context;
}
public void execute() {
Authenticator authenticator = context.getBean("authenticator", Authenticator.class);
if (!authenticator.authenticate()) {
//do some stuff
} else {
//do some other stuff
}
}
}
アプリケーションコンテキスト以外の方法では、構成されたBeanにアクセスできないことに注意することが重要です。また、別のApplicationContextをインスタンス化することは、すべての構成を繰り返すため、答えではありません。