小编jsa*_*ler的帖子

何时在 Springs @Configuration 中将 proxyBeanMethods 设置为 false?

在查看 springs 自动配置源代码时,似乎每个自动配置类都设置了proxyBeanMethods = false.

@Configuration(proxyBeanMethods=false)
public class SomeAutoConfiguration {
    ...
}
Run Code Online (Sandbox Code Playgroud)

javadoc 给出了这个特定字段的详细解释:

指定 {@code @Bean} 方法是否应该被代理以强制执行 bean 生命周期行为,例如,即使在用户代码中直接调用 {@code @Bean} 方法的情况下也返回共享的单例 bean 实例。(...) 如果这不是必需的,因为每个特定配置的 {@code @Bean} 方法都是自包含的并且设计为容器使用的普通工厂方法,请将此标志切换为 {@code false} 以便避免 CGLIB 子类处理。(...)

读完这篇文章后,我仍然很困惑,什么时候最好将它设置为 false。

以下是我的问题:

  • 有人可以举一个具体的例子,当这个领域应该是真实的并解释为什么吗?
  • 为什么这个字段在自动配置类上设置为 false?

更新: 在 github 上发现了两个问题,它们解释了为什么它出现false在大多数自动配置类上:

java spring spring-boot

11
推荐指数
1
解决办法
4226
查看次数

标签 统计

java ×1

spring ×1

spring-boot ×1