本文主要和大家分享介绍了关于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动态代理的使用方法示例