何时在Springs @Configuration中将prosctorBeanMethods设置为false?
在查看弹簧自动配置源代码时,似乎每个自动配置类都设置了。proxyBeanMethods = false
@Configuration(proxyBeanMethods=false)
public class SomeAutoConfiguration {
...
}
javadoc给出了这个特定字段的详细说明:
指定 {@code @Bean} 方法是否应进行代理以强制 Bean 生命周期行为,例如,即使在用户代码中直接调用 {@code @Bean} 方法的情况下,也要返回共享的单例 Bean 实例。(...)如果由于每个特定配置的 {@code @Bean} 方法都是独立的,并且设计为容器使用的普通工厂方法,因此不需要这样做,请将此标志切换为 {@code false},以避免 CGLIB 子类处理。(...)
阅读本文后,当最好将其设置为false时,我仍然感到困惑。
以下是我的问题:
- 当这个领域应该为真时,有人可以举一个具体的例子并解释为什么吗?
- 为什么在自动配置类上将此字段设置为 false?
更新:在github上发现了两个问题,给出了为什么它在大多数自动配置类上给出了一些解释:false