SpringBoot和Spring AOP默认动态代理方式
创始人
2025-05-28 09:49:37
0

SpringBoot和Spring AOP默认动态代理方式

目录

  • SpringBoot和Spring AOP默认动态代理方式
  • 1. springboot 2.x 及以上版本
  • 2. Springboot 1.x
  • 3.SpringBoot 2.x 为何默认使用 Cglib

  • Spring 5.x中AOP默认依旧使用JDK动态代理
  • SpringBoot 2.x开始,AOP为了解决使用JDK动态代理可能导致的类型转换异常,而使用CGLIB。
  • 在SpringBoot2.x中,AOP如果需要替换使用JDK动态代理可以通过配置项spring.aop.proxy-target-class=false来进行修改,proxyTargetClass配置已无效。

1. springboot 2.x 及以上版本

在 SpringBoot 2.x AOP中会默认使用Cglib来实现,但是Spring5中默认还是使用jdk动态代理。Spring AOP 默认使用 JDK 动态代理,如果对象没有实现接口,则使用 CGLIB 代理。当然,也可以强制使用 CGLIB 代理。

在 SpringBoot 中,通过AopAutoConfiguration来自动装配AOP.
在这里插入图片描述

2. Springboot 1.x

Springboot 1.x AOP默认还是使用 JDK 动态代理的
在这里插入图片描述

3.SpringBoot 2.x 为何默认使用 Cglib

因为JDK 动态代理是基于接口的,代理生成的对象只能赋值给接口变量。JDK动态代理使用Proxy.newProxyInstance()创建代理实现类,然而第二个参数就需要接口类型,如果没有接口类型就会报错。

Proxy.newProxyInstance(iCustomerInstance.getClass().getClassLoader(), iCustomerInstance.getClass().getInterfaces(), this);

而 CGLIB 就不存在这个问题。因为 CGLIB 是通过生成子类来实现的,代理对象无论是赋值给接口还是实现类,这两者都是代理对象的父类。

所以在2.x版本以上,将 AOP 默认实现改为了 CGLIB代理。

新建一个接口

public interface ICustomService {void printf();
}

新建一个ICustomService的实现类

@Service
public class CustomServiceImpl implements ICustomService {public void printf() {}
}

再增加一个类不实现任何接口
然后启动,可以debug看到ICustomService和CustomNoImpl看出AOP的代理使用的是CGLIB的动态代理
在这里插入图片描述
然后我们通过application.properties配置将代理默认设置为JDK代理。

spring.aop.proxy-target-class=false

然后启动调试发现,CustomNoImpl因为没有实现接口,所以使用的是CGLIB生成的代理,而customService有接口实现,所以使用JDK的动态代理

在这里插入图片描述

相关内容

热门资讯

吕文君社媒庆祝夺冠:不只是海港... 2025赛季中超联赛于昨日正式落幕,上海海港队凭借出色的表现,成功捧起了冠军奖杯,成为了中超历史上又...
日本政府顾问:无需等到160关... 日本政府顾问表示,高市早苗政府对日元干预将采取更积极姿态,以抑制日元疲软带来的通胀压力,干预门槛可能...
被摄影师起诉侵权 视觉中国公开... 来源:每日经济新闻 持续两年多的摄影师起诉视觉中国(000681.SZ)侵权一案近日迎来进展。 法...
《哪吒2》被质疑过多使用动捕技... 搜狐娱乐讯 22日,奥斯卡公开的最佳动画长片奖“符合参评资格”大名单中没有《哪吒之魔童闹海》,引发热...
为了少付合同款,湖南一公司诉讼... 华声在线11月23日讯(文/视频 全媒体记者 杨昱 通讯员 胡云淞)为了少支付40万元合同款及利息,...
原创 退... 在机关事业单位养老保险制度从2014年10月1日开始实施之后,标志着我国退休的制度的并轨。之所以会称...
从“纸上政策”到“落地实效” ... 在建湖县高新技术园区,文辰精密科技有限公司的生产车间内机器轰鸣,工人们正忙着赶制新一批订单。这家专注...
跨省办公更便捷!京津冀律师驿站... 11月22日至23日,京津冀律师驿站在北京启动“百千万行动计划”,计划通过建立百家律所联系点,推动千...
梅花生物:因侵害专利权被味之素... 北京商报讯(记者 郭秀娟 王悦彤) 11月23日,北京商报记者获悉,近日梅花生物发布公告称,公司及全...
吉林益豆食品有限公司:依托互市... 珲春地处中、俄、朝三国交界,得天独厚的地理位置,使其成为连接东北亚的“黄金通道”。在这里,吉林益豆食...