aop前传之代理
一。jdk提供proxy类对目标对象实现代理,简单的说对方法的调用交给代理对象来操作。
代理目标
代理的具体实现:
代理测试;
简单说:利用proxy生成一个委托类实现代理。这个委托类是目标类的接口的实现,内部回调函数实际上是委托类对目标接口的重写方法。
注意点,目标类必须是有接口的,回调类必须是inocationHandler的实现类。
二。对与没有实现接口的类,要实现代理,可以用到第三方的cglib框架实现代理。spring和hibernate都在用的。CGLIB(Code Generation Library)是一个开源项目!是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。
简单说:委托类通过继承目标类重写所以非final方法,回调函数就实际重写的方法。
注意:回调类是接口MethodInterceptor实现类。
补充:
这样回调属于aop的一种概念