动态代理的概念:
他是java运行时创建的某个类的代理类,从而完成一些特定的功能。
特性:字节码随用随创建,随用随加载。
作用:在不修改源码的基础上,对方法进行修改。
分类:
基于接口的动态代理
基于子类的动态代理
基于接口的动态代理:
使用时必须实现一个接口
提供者:jdk官方
创建代理对象的类:
Proxy
创建代理对象的方法:
newProxyInstance
该方法的三个参数:
ClassLoader loder: 类加载器用于加载创建出来的代理对象的字节码的,他有固定写法。
Class<?>[] interfaces: 字节码数组,用于让创建出来的代理对象和被代理对象具有相同的方法,他有固定的写法。
invocationHandler h:一个接口,用于增强代码的谁用谁写
基于子类的动态代理:
使用要求:
被代理的类不是最终类
提供者:
第三方cglib