부적절하게 사용된 프록시 메서드에 대한 경고를 보고합니다. Spring Framework 5.2에는 @Configuration 클래스 처리 최적화가 도입되었으며, 이는 @Configuration(proxyBeanMethods = false) 속성을 통해 활성화할 수 있습니다.

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()); // -> 잘못된 호출
  }
}