报告有关错误使用的代理方法的警告。
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()); // -> 错误的调用
}
}