zoukankan      html  css  js  c++  java
  • java 动态代理理解

    动态代理,顾名思义就是动态创建一个代理对象,无需手动为被代理类创建一个代理类,java的动态代理通过Proxy类和Invocation接口实现,代码如下:

    //被代理接口

    public interface HelloWorld {
      public void test();
    }

    //Handler

    public class TestHandler implements InvocationHandler {

      public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
        System.out.println("result");
        return null;
      }
    }

    //测试类

    public class TestMyBatis {
      public static void main(String[] args) {
        HelloWorld helloWorld = (HelloWorld)Proxy.newProxyInstance(HelloWorld.class.getClassLoader(), new Class[]{HelloWorld.class}, new TestHandler());
        helloWorld.test();
      }
    }

    这个例子,仅仅根据接口生成一个代理类,并且交给handler处理(mybatis中就是这么干的)这样可以把业务逻辑写到invoke方法中,实现低耦合。

    invoke的三个参数说明:Object proxy:代理类的实例,上述例子中的helloWorld对象,Method method:执行的方法,上述例子中的test方法,Object[] args:method方法的参数,上述例子中参数为空,所以此处为空。

  • 相关阅读:
    FusionInsight HD组件介绍
    Hive与HBase的区别与联系
    SSD与HDD、HHD的区别
    RAID 2.0 技术(块虚拟化技术)
    Fusionstorage的逻辑架构
    介绍一下什么是“虚拟化”
    介绍一下什么是“云计算”
    介绍一下什么是“存储器”
    介绍一下什么是“服务器”
    SAS与SATA的区别
  • 原文地址:https://www.cnblogs.com/lqfu/p/4730862.html
Copyright © 2011-2022 走看看