我已经在我的spring-boot项目中定义了一个spring bean配置类,如下所示:
@Configuration
public class GgjSsoPropsConfig {}
但是在spring-boot应用程序启动之后,我尝试评估此配置bean的类名,然后得到:
// System.out.print(this.getClass().getSimpleName())
GgjSsoPropsConfig$$EnhancerBySpringCGLIB$$788ad0f1
好像我的豆子变成了另一个“代理豆子”?
顺便说一下,我从未在项目中启用任何AOP
功能。
答案 0 :(得分:0)
是的。 Spring AOP使用CGLIB(在这种情况下)或动态代理来创建bean实例并将其添加到应用程序上下文中。
https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch08s06.html
答案 1 :(得分:0)
答案是肯定的,我在此bean post处理方法中找到了答案:
1
这是此方法的官方评论:
对BeanFactory进行后处理以搜索配置类BeanDefinitions;
然后,通过{@link ConfigurationClassEnhancer}增强所有候选人。
实际上,这个新生成的增强器bean只是我原始配置类org.springframework.context.annotation.ConfigurationClassPostProcessor#enhanceConfigurationClasses
的子类,它继承了父类的所有方法和字段,并在Spring的基础上添加了一些额外的增强器功能。