动态代理JDKf方式InvocationHandler、Proxy
来源:互联网 发布:现货外盘软件 编辑:程序博客网 时间:2024/05/18 01:07
动态代理是一种设计模式 jdk动态代理只能代理接口
主要原理是java的反射机制和泛型
InvocationHandler 事务处理类的接口 这里实现代理过程中业务处理的逻辑 ,比如一个火车票代理点,在这里就可以新增收取手续费的功能
invoke方法第一个参数是真正的代理类,第二个参数是被代理的方法,第三个参数是方法中传入的参数
package dongtaidaili;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/** * @author lh * @date 创建时间:2017年4月28日 上午9:58:30 */public class PersonHandler implements InvocationHandler {private Object obj; public PersonHandler(Object obj){ this.obj=obj; } @Override/** * proxy: 指代我们所代理的那个真实对象 method: 指代的是我们所要调用真实对象的某个方法的Method对象 args: 指代的是调用真实对象某个方法时接受的参数 *///当我们通过代理对象调用一个方法的时候,这个方法的调用就会被转发为由InvocationHandler这个接口的 invoke 方法来进行调用//method是指被代理的方法public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//在转调具体目标对象之前,可以执行一些功能处理//在这里就可以实现过滤System.out.println("执行method方法之前 proxy name="+proxy.getClass().getName()); //转调具体目标对象的方法 Object result = method.invoke(obj, args); //在转调具体目标对象之后,可以执行一些功能处理 System.out.println("执行method方法之后"); //动态生成代理类 return result; }}
Proxy
这个类是用来生成真正代理的类
在完成如下代码段之后
PersonDao proxy = (PersonDao)Proxy.newProxyInstance(pDao.getClass().getClassLoader(), pDao.getClass().getInterfaces(), handler);
proxy就可以当做是被代理的类来使用
在这个方法中第一个参数是被代理类的类加载器
第二个是实现的哪个接口
第三个是代理事务处理类
0 0
- 动态代理JDKf方式InvocationHandler、Proxy
- 动态代理 Proxy InvocationHandler
- 动态代理proxy ,InvocationHandler
- 动态代理 Proxy InvocationHandler
- java动态代理-InvocationHandler Proxy
- Java动态代理InvocationHandler+Proxy
- InvocationHandler,proxy之动态代理
- 动态代理 Proxy InvocationHandler学习
- 动态代理 Proxy, InvocationHandler 用法
- JDK动态代理proxy,InvocationHandler
- 动态代理 Proxy InvocationHandler学习
- java 动态代理学习(Proxy,InvocationHandler)
- java 动态代理深度学习(Proxy,InvocationHandler)
- java 动态代理学习(Proxy,InvocationHandler)
- jdk proxy invocationhandler (jdk动态代理)
- JAVA动态代理实现 Proxy InvocationHandler
- JAVA JDK 动态代理 proxy invocationHandler
- java 动态代理深度学习(Proxy,InvocationHandler)
- 进阶篇_STL详解(函数模板特化,类模板特化,用模板实现自己的通用算法)
- ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
- Apache 2.4 局域网发布网站
- vue2.0——v-model指令
- 2017年五一单身狗准备怎么过?
- 动态代理JDKf方式InvocationHandler、Proxy
- Flex布局新旧混合写法详解(兼容微信)
- 卷积神经网络图像风格转移 Image StyleTransfer Using Convolutional Neural Networks
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- 欢迎使用CSDN-markdown编辑器
- Java Socket 的工作机制
- Qt Creator在Windows上的调试器安装与配置
- 特征离散化,特征交叉,连续特征离散化
- gdb 调试