Spring中jdk动态代理和cglib动态代理各自的实现方式与优缺点

在Spring框架中,aop是基于代理模式才能实现的功能,Spring给我们提供了两种代理模式:jdk动态代理和cglib动态代理。他们各有优缺点。

jdk动态代理

jdk动态代理是jdk自带的,所以使用它不需要额外导入jar包,它是基于反射机制实现的,当需要代理的真实类继承了接口时,spring默认使用jdk动态代理。

cglib动态代理

cglib动态代理需要导入相应jar包,它是基于字节码的,是生成了代理真实类的子类,无论代理真实类有没有实现接口都可以使用。

手动设置代理方式

在spring aop中,可以手动设置使用哪种代理方式,只需在spring配置文件中加入以下代码:

<aop:aspectj-autoproxy
proxy-target-class="true"></aop:aspectj-autoproxy>

设置为 true 使用 cglib;
设置为 false 使用 jdk,但是要注意,如果需要代理的真实类没有实现接口,不能强制使用jdk动态代理。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值