You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在Spring配置类上使用@Configuration(proxyBeanMethods = false)?

关于@Configuration(proxyBeanMethods = false)的使用原因

在Spring Boot配置类中使用@Configuration(proxyBeanMethods = false),核心原因主要有两点:

1. 性能优化

当proxyBeanMethods设为false时,Spring不会为该配置类生成CGLIB代理。默认情况下(proxyBeanMethods=true),Spring会创建代理类来保证每次调用配置类中的@Bean方法时,返回的都是同一个单例Bean。但如果你的配置类没有通过内部调用@Bean方法来复用Bean实例(比如示例代码里,所有@Bean方法都是直接创建新对象,没有依赖本类其他@Bean的调用),那么代理就完全没有存在的必要。关闭代理能减少类加载的开销,降低应用启动时间和内存占用,在大型项目中这种优化的收益会更显著。

2. 明确代码语义

设置proxyBeanMethods=false是一种语义化声明,告诉Spring和其他开发者:这个配置类是纯粹的Bean定义容器,内部的@Bean方法之间没有依赖关系,不需要Spring维护它们的单例一致性。这让代码的意图更清晰,避免后续开发者误操作(比如在配置类内部调用@Bean方法时产生预期外的行为)。

回到你提供的示例代码:MyJmsConfiguration的myFactory方法既没有调用本类其他@Bean方法,也不存在外部通过调用该类@Bean方法获取Bean的场景,完全符合关闭代理模式的适用条件。

内容的提问来源于stack exchange,提问作者joe_specimen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:12:08