标签:需要 拦截器 extend 写法 code 业务 增强 ati 功能
引用文章 https://www.cnblogs.com/boboxing/p/8126046.html
代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。
代理的作用在于不修改目标代码的情况下,可以控制对目标的访问,可以在其前后加上自己的业务处理代码,甚至阻止对目标方法的访问,有点类似于过滤器和拦截器的作用。
总结: 如果在不确定的情况下,不要去使用静态代理,一代写代码就会产生类,一旦产生类就会爆炸。
调用Proxy类的静态方法newProxyInstance即可,该方法会返回代理类对象
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h )
接收的三个参数依次为:
ClassLoader loader:
指定当前目标对象使用类加载器,写法固定Class<?>[] interfaces:
目标对象实现的接口的类型,写法固定InvocationHandler h
:事件处理接口,需传入一个实现类,一般直接使用匿名内部类生产的代理类 $Proxy0 extends Proxy implements targerInterface
原理:使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理。唯一需要注意的是 CGLib不能对声明为final的方法进行代理 ,因为CGLib原理是动态生成被代理类的子类。 详细分析引用:https://www.cnblogs.com/monkey0307/p/8328821.html
前提条件:
标签:需要 拦截器 extend 写法 code 业务 增强 ati 功能
原文地址:https://www.cnblogs.com/SweetnessInstinct/p/11674712.html