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