@Configuration(proxyBeanMethods = false) 和(proxyBeanMethods = true)详解

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底层都需要先去检查该配置类在容器中是否有实例,如果有则直接取,没有再创建实例,与不开代理直接创建对象相比,是比较耗费性能的。

你可能感兴趣的:(SpringBoot,java,spring,boot,spring,注解,程序员)