不正に使用されているプロキシメソッドに対して警告を報告します。 Spring Framework 5.2 では、@Configuration(proxyBeanMethods = false) 属性を指定することで、@Configuration クラスの処理を最適化できるようになりました。

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()); // -> 不正な呼び出し
  }
}