美文网首页
java的动态代理

java的动态代理

作者: 马仙阳 | 来源:发表于2018-01-31 16:00 被阅读0次

     java的动态代理如果利用好了,可以拓展一个类的功能。举个例子,mybatis是怎么把interface的方法和mapper文件里的sql语句关联?mybatis的getMapper(),就是通过动态代理,从map中根据该方法名称,得到要执行的sql,最后交给executor执行。

动态代理实现:继承InvocationHandler类,然后重写invoke()方法

正常实现:

public class proxyTest implements InvocationHandler{

           public Object invoke(Object proxy, Method method ,Object[] args){

                                //method :被代理对象执行的方法

                                //args:被代理对象执行的方法传入的参数

              }

}

public static void main(String[] args){

           ProxyTest proxy = new ProxyTest();

           User u = (User)Proxy.newProxyInstance(p.getClass().getClassLoader(),new Class[]{User.Class},proxy);

            u.do();

}

这是最简便的写法

封装一下:

public class  ProxyTest implements InvocationHandler{

         public <T>  T newInstance(Class<T> cls){

                   return  (T)  Proxy.newProxyInstance(T.getClassLoader(),new Class[]{T},this)

          }

           public Object invoke(Object proxy, Method method ,Object[] args){

                                //method :被代理对象执行的方法

                                //args:被代理对象执行的方法传入的参数

              }

}

所有的类都有父类Object,Object有9个方法toString,equals,wait,notify,notifyAll,,hashcode,finalize,clone,getClass,如果是这些方法要把它们过滤,

java.lang.reflect.Method.getDeclaringClass()方法返回表示声明由此Method对象表示的方法的类的Class对象。

if(Object.class.equals(method.getDeclaringClass())){

          return method.invoke(this,args);//this这个对象调用method这个方法,参数是args

}

相关文章

  • Java 动态代理

    java的动态代理机制详解 JDK动态代理详解 Java核心技术点之动态代理

  • Java动态代理从入门到原理再到实战

    目录 前言 什么是动态代理,和静态代理有什么区别 Java动态代理的简单使用 Java动态代理的原理解读 动态代理...

  • 保存java 动态代理生成的字节码文件

    保存java 动态代理生成的字节码文件 在Java中,常用的动态代理技术有JDK的动态代理和cglib动态代理,不...

  • JDK动态代理详解

    JDK动态代理详解 java动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及...

  • java动态代理(JDK和cglib)(转载自http://ww

    java动态代理(JDK和cglib) JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是...

  • java反射和动态代理

    java动态代理Proxy.newProxyInstance 详解java代理机制(静态代理、动态代理)以及使用场景

  • java基础巩固笔记(4)-代理

    标签: java Contents java基础巩固笔记(4)-代理概念动态代理创建动态类动态代理的工作原理面向切...

  • java 动态代理

    动态代理动态代理可以让我们在运行时动态生成代理类,解耦程度更高。Java 动态代理的实现主要借助于 java.la...

  • Java动态代理简析原理

    说下Java动态代理,Spring的AOP就是基于Java的动态代理实现的。动态代理用到的几个类和接口,Proxy...

  • 动态代理的两种方式

    静态代理就不说了,基本用到的都是动态代理。 Java中动态代理有JDK动态代理和CGLIB动态代理。 JDK代理的...

网友评论

      本文标题:java的动态代理

      本文链接:https://www.haomeiwen.com/subject/avzkzxtx.html