Java JDK动态代理的使用方法示例

  

本文主要和大家分享介绍了关于Java JDK动态代理使用的相关内容,分享出来供大家参考学习、下面来一起看看详细的介绍:

  


  

  

代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。

  

Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。

  

JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的类文件,并加载运行的过程。

  


  

  

首先创建接口

        公共接口主题{      空白测试();   }      

创建实现类

        公共类SubjectImpl实现主题{      @Override   公共空白测试(){   system . out。println(“这是测试方法”);   }   }      

创建InvocationHandler实现类

        公共类SubjectInvocationHandler实现InvocationHandler {      私人主体目标;      公共SubjectInvocationHandler(主题主题){   这一点。目标=主题;   }      @Override   公共对象调用对象代理、方法方法,对象[]args)抛出Throwable {      system . out。println(“之前方法!”);      结果=方法对象。调用(目标,args);      system . out。println(“后方法!”);      返回结果;   }   }      

最后调用:

        公开课了DynamicProxy {         公共静态void main (String参数[]){      主题主题=new SubjectImpl ();      代理主题=(主题)Proxy.newProxyInstance (SubjectImpl.class.getClassLoader (), SubjectImpl.class.getInterfaces(),新的SubjectInvocationHandler(主题);   proxy.test ();      System.out.println(代理);   }   }      

运行结果:

        之前的方法!   这是测试方法   后方法!之前      


  

  

1。通过实现InvocationHandler接口,在调用方法中实现代理逻辑;
  

  

2。通过代理的newProxyInstance方法生成代理类,这里主要是根据被代理类的接口类型,通过反射创建代理类;

  

关于分析JDK动态代理这里有一篇很好的文章:Java JDK动态代理(AOP)的实现原理与使用详析

  

好了,以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

Java JDK动态代理的使用方法示例