proxyBeanMethods を無効化するとプロキシインスタンスは作成されなくなりますが、メソッドを呼び出せばもう一度起動できます (毎回新しいインスタンスが返されます)。
その結果、コンテキスト内で対応する Bean を実際に注入しているということは保証されなくなります。
Bean メソッドの不正な呼び出しの例:
@Configuration(proxyBeanMethods = false)
class TestConfiguration {
@Bean
public FirstBean firstBean() {
return new FirstBean();
}
@Bean
public SecondBean secondBean() {
return new SecondBean(firstBean()); // -> 不正な呼び出し
}
}
proxyBeanMethods を true に設定するか、以下のようにコードを書き変えることができます。
@Configuration(proxyBeanMethods = false)
class TestConfiguration {
@Bean
public FirstBean firstBean() {
return new FirstBean();
}
@Bean
public SecondBean secondBean(FirstBean someBean) { // -> 正しく注入されたインスタンス
return new SecondBean(someBean);
}
}
また、このインスペクションは @Configuration ステレオタイプのないクラスにある @Bean メソッドの呼び出しをチェックします ("Bean lite mode")。
@Component
class TestComponent {
@Bean
public FirstBean firstBean() {
return new FirstBean();
}
@Bean
public SecondBean secondBean() {
return new SecondBean(firstBean()); // -> 不正な呼び出し
}
}