一、概念
本篇主要介绍,静态代理,动态代理,cglib实现动态代理。后续Spring AOP就是基于动态代理实现的。
二、静态代理
类似装饰者模式,增强原对象的某些方法。
三、java内置动态代理
优点:
不需要像静态代理一样被代理方法都要实现一遍,而只需要在回调函数中进行处理就可以了,重复代码只需编写一次。
缺点:
java的动态代理是通过代理者实现和被代理者相同的接口来保证两者具有相同的方法的,如果被代理者想要被代理的方法不属于任何接口,则生成的代理者自然无法具有这个方法,也就无法实现对该方法的代理。
四、cglib实现动态代理
有点:
不需要实现接口了。
缺点:
需要导入cglib包。spring-core的包中已经包含。
五、代码实现
https://github.com/hailindai/SpringSample