Spring中是否为每个Bean创建一个代理?

Arj*_*dar 3 java aop spring spring-aop spring-boot

所以,我在网上阅读,你不能将配置定为最终的,因为 CGLIB 扩展了类来创建代理。但是,我正在阅读 @Scope 的文档,默认的 proxyMethod 值是不创建代理(链接在这里 - https://docs.spring.io/springframework/docs/current/javadoc-api/org/springframework/ context/annotation/Scope.html)。

所以,我的主要问题是,是否为每个 @Configuration 创建一个代理?

R.G*_*R.G 6

Spring 仅在需要时才为 bean 创建代理(例如:事务管理)。我已经在这里解释了另一个 SO 问题,请浏览答案的 A2 部分以获取更多详细信息。

对于@Configuration带注释的类,始终会创建代理,这意味着它是必需的。为什么需要它可以从以下参考文献中理解。

@Bean:通读@Configuration类@Bean Lite模式中的@Bean方法部分

请仔细阅读@kriegaex 的精彩答案,以了解@Configuration类的内部运作方式。

那么回答你的问题是为每个 @Configuration 创建一个代理吗?是的,除非显式配置了proxyBeanMethodsfor 。@Configuration

希望这可以帮助。