美文网首页
Spring5.2-proxyBeanMethods作用

Spring5.2-proxyBeanMethods作用

作者: AlanSun2 | 来源:发表于2019-11-19 16:38 被阅读0次

    有了 proxyBeanMethods 属性后,配置类不会被代理了。主要是为了提高性能,如果你的 @Bean 方法之间没有调用关系的话可以把 proxyBeanMethods 设置为 false。否则,方法内部引用的类生产的类和 Spring 容器中类是两个类。

    前面说了加了 proxyBeanMethods 之后不会被代理了,所以配置类和方法也可以使用 final 修饰了,5.2之前的版本是强制校验的。

    源码解析:

    ConfigurationClass

    public void validate(ProblemReporter problemReporter) {
        // A configuration class may not be final (CGLIB limitation) unless it declares proxyBeanMethods=false
        Map<String, Object> attributes = this.metadata.getAnnotationAttributes(Configuration.class.getName());
        if (attributes != null && (Boolean) attributes.get("proxyBeanMethods")) {
            if (this.metadata.isFinal()) {
                problemReporter.error(new FinalConfigurationProblem());
            }
            for (BeanMethod beanMethod : this.beanMethods) {
                beanMethod.validate(problemReporter);
            }
        }
    }
    

    大家动手测试下就知道怎么回事了。

    相关文章

      网友评论

          本文标题:Spring5.2-proxyBeanMethods作用

          本文链接:https://www.haomeiwen.com/subject/gnzwictx.html