如果禁用 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()); // -> 不正确的调用
}
}