Springboot2中新增的注解属性proxyBeanMethods:代理bean的方法

Springboot2中新增的注解属性proxyBeanMethods,默认是true;

可以修改外false; 例如:

@Configuration(proxyBeanMethods = false)

这个属性大致的意思是:

proxyBeanMethods代表的是,如果是true的话,那么这个配置类就会被代理了,如果是false的话,那么就不会被代理。

实际应用中使用主要是为了性能;因为

当使用代理对象的调用它的方法,会检测容器中是不是有了这样的组件,如果有,则不再新建组件,直接将已经有的组件返回。
如果说没有的话,才会新建组件。这样保证了容器中的组件始终就保持单一性。不过这也有一个不好的地方,那就是每次都要检测,会降低速度。

关于Spring的代理机制描述:

  • 主要概念:

CGLIB:
CGLIB(Code Generation Library)是一个基于ASM的字节码生成库,它允许我们在运行时对字节码进行修改和动态生成。CGLIB通过继承的方式实现代理;它可以在运行期扩展Java类与实现Java接口
SpringBoot 2.x开始,为了解决使用JDK动态代理可能导致的类型转换异常,而使用CGLIB。 如果需要替换使用JDK动态代理可以通过配置项spring.aop.proxy-target-class=false来进行修改,proxyTargetClass配置已无效。

猜你喜欢

转载自blog.csdn.net/weixin_42551921/article/details/127866035