上次我们谈到AOP静态代理,这次我们谈谈AOP动态代理。
动态代理就像是一个中介公司,不仅仅是为单一的客户服务,也不能确定客户对象,谁来了就为谁服务。
动态代理又分为:jdk面向接口的代理和CGLIB面向继承的代理。相比之下CGLIB代理最大的缺点就是代理不能叠加。
这次我们就用jbk动态代理
首先我们先来了解下jbk动态代理:
我们就按照jbk动态代理顺序进行讲解:
首先是测试类:
这里我们首先会调用LogProxy中的createProxyInstance()方法.创建代理对象
然后当调用测试类中的add方法时,就执行invoke()方法进行激活目标对象中的方法。
在invoke()中添加要增强的方法。
特别注意:代理一定要实现 InvocationHandler接口 和 对目标对象的引用
动态代理大致就这样。
jbk相对于CGLIB最大的有点就是可以叠加代理。
照上LogProxy再写一个RateProxy代理,大致都一样把showlog()方法随便改写下就可以了
叠加只需要测试类中:
这样就实现了多次代理,添加多种功能了