java 动态代理
一:动态代理:
1.JDK动态代理(接口方式)
介绍:使用java反射包中的类和接口实现动态代理的功能,反射包:java.lang.reflect,里面有三个类:InvocationHandler,Method,Proxy
(1)InvocationHandler(调用处理器) 里面就一个方法:invoke()
invoke():表示代理类要执行的功能代码,代理类要完成的功能就写在invoke()方法中
代理类完成的功能:
1.调用目标方法,执行目标方法的功能
2.功能增强,在调用目标方法的时候,增强功能
(2)方法原型:
public object invoke(Object proxy,Method method,Object[] args)
参数解析:
Object proxy:jdk创建的代理对象,无需赋值
Method method:目标类中的方法,jdk提供method对象,表示方法,确切的说是表示目标类中的方法,Method.invoke(目标对象,方法的参数)
Object[] args:目标类中的方法参数,jdk提供
(3)怎么用?
1.创建一个类实现InvocationHandler
2.重写invoke()方法
(4)代码实现:


代理类代码拆分解析:





总结:动态代理流程

总结:

2.Cglib代理(第三方库,继承方式)
解析:第三方工具库,原理是继承,Cglib通过继承目标类,创建它的子类,在子类中重写父类中同名的方法,实现功能的修改,在很多框架中都有应用,比如mybatis和spring中都有使用
浙公网安备 33010602011771号