java学习日记

静态代理、动态代理
1、静态代理理解:
通过在代码中显式定义一个业务实现类一个代理,在代理类中对同名的业务方法进行包装,用户通过代理类调用被包装过的业务方法

2、动态代理:动态代理包括jdk代理和cglib动态代理
(1)jdk动态代理:通过接口中的方法名,在动态生成的代理类中调用业务实现类的同名方法
(2)通过继承业务类,生成的动态代理类是业务类的子类,通过重写业务方法进行代理

3、jdk动态代理和CGLIB动态代理区别:
JDK动态代理是面向接口,在创建代理实现类时比CGLib要快,创建代理速度快。

CGLib动态代理是通过字节码技术底层生成一个继承代理类的类来实现,然后重写代理类的方法(如果代理类中方法被final修饰,该方法无法代理成功),在创建代理这一块没有JDK动态代理快,但是运行速度比JDK动态代理要快。

Spring中如果要被代理的对象是个实现类,那么Spring会使用JDK动态代理来完成操作(Spring默认采用JDK动态代理实现机制);如果要被代理的对象不是个实现类那么,Spring会强制使用CGLib来实现动态代理。

转载:http://www.cnblogs.com/jiyukai/p/6958744.html
https://www.cnblogs.com/ygj0930/p/6542259.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值