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中都有使用

  

 

posted @ 2022-03-10 22:59  每天坚持亿点点  阅读(210)  评论(0)    收藏  举报