@configuration(proxybeanmethods = false)启用lite轻量级模式,禁用cglib代理,提升启动性能;适用于@bean方法间无调用、编写自动配置类、需private/final方法或存在启动慢问题的场景。

直接在 @Configuration 注解上显式设置 proxyBeanMethods = false,就能禁用 CGLIB 代理,让配置类以“轻量级模式(Lite mode)”运行,从而减少启动时的类增强开销,提升加载性能。
什么时候该加这个配置
满足以下任一情况,就适合设为 false:
- 配置类中所有
@Bean方法彼此**不相互调用**(比如只是独立声明数据源、模板引擎、客户端等) - 你正在编写 Spring Boot 自动配置类(如
xxxAutoConfiguration),这是官方推荐做法 - 项目启动慢,且火焰图或
--debug日志显示ClassPathScanningCandidateComponentProvider或代理生成耗时明显 -
@Bean方法需要定义为private或final(只有false时才允许)
怎么写才正确
语法很简单,但要注意位置和语义:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 写在
@Configuration注解内:@Configuration(proxyBeanMethods = false) - 不能只写
@Configuration(false)—— 这是无效写法 - 如果类里有
@Bean方法调用了另一个@Bean方法(比如service()里调了repository()),设为false会导致每次调用都新建对象,破坏单例,务必避免 - 依赖关系建议改用参数注入方式替代方法调用:
@Bean
public Service service(Repository repository) {
return new Service(repository);
}
这样既保持单例,又兼容proxyBeanMethods = false
配合其他优化效果更好
单独设 false 有收益,但搭配以下手段能放大效果:
- 加上
@Lazy延迟初始化非核心 Bean(如定时任务、消息监听器) - 引入
spring-context-indexer编译期生成组件索引,加速扫描 - 用
spring.autoconfigure.exclude排除不用的自动配置(如不用 Web 可排除WebMvcAutoConfiguration) - 启用 Actuator 的
/actuator/startup端点,验证配置类加载时间是否下降
它不是万能开关,但对无内部调用的配置类来说,是零成本、高回报的性能优化点。










