proxyBeanMethods = false 代表关闭代理
proxyBeanMethods = true 代表开启cglib代理
proxyBeanMethods = true 或不写,是Full模式
proxyBeanMethods = false 是lite模式
不带@Configuration的类叫Lite配置类
先看注解源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
boolean proxyBeanMethods() default true;
}
可以看到默认是开启代理模式的。
但其实开启代理模式性能并不如不开,除非你对该配置类是严格要求单例的。
开启代理模式,每次调用这个配置类,SpringBoot底层都需要先去检查该配置类在容器中是否有实例,如果有则直接取,没有再创建实例,与不开代理直接创建对象相比,是比较耗费性能的。