10、对于JDK动态代理的一个简单封装ProxyUtil的使用
来源:互联网 发布:js 点击显示隐藏图片 编辑:程序博客网 时间:2024/06/12 01:44
1、对于JDK的动态代理,进行了一个简单的封装。以便于操作起来更简单。
2、IUserDao.java接口的定义
public interface IUserDao {public void add();public void delete();}
3、UserDao.java的实现
public class UserDao implements IUserDao {@Overridepublic void add() {System.out.println("add...");}@Overridepublic void delete() {System.out.println("delete...");}}
4、ProxyHandler.java的代码
public abstract class ProxyHandler<T> implements InvocationHandler {/** * 被代理的对象 */private T target;public ProxyHandler(T target) {this.target = target;}/** * 创建代理,如果目标类没有实现接口则返回自己 * * @param target * 要代理的对象 * @return 得到的代理类 */@SuppressWarnings("unchecked")public T getProxy() {Class<T> cls = (Class<T>) target.getClass();// 查看目标类有没有实现接口if (cls.getInterfaces() != null) {return (T) Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(), this);}return target;}/*** * 通过代理实现调用,在里面加上方法增强的逻辑 */@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object obj = null;try {// 调用前的业务处理before(args);// 执行被代理对象的方法obj = method.invoke(target, args);// 调用后的业务处理after(args);} catch (Exception e) {// 自定义的异常方法onException(e);}return obj;}/*** * 出现异常时处理 * * @param ex */public abstract void onException(Exception ex);/** * 调用方法后处理 * * @param args */public abstract void after(Object[] args);/** * 调用方法前处理 * * @param args */public abstract void before(Object[] args);}
5、ProxyUtil.java的代码
public class ProxyUtil<T> extends ProxyHandler<T> {/** * 加入被代理的对象 * * @param target * 被代理的对象,一般都是接口的实现类 ProxyUtil<T>,是实现类的接口 */public ProxyUtil(T target) {super(target);}@Overridepublic void onException(Exception ex) {ex.getMessage();}@Overridepublic void after(Object[] args) {System.out.println("end...");}@Overridepublic void before(Object[] args) {System.out.println("start...");}}
6、测试代码
public class ProxyTest {@Testpublic void test02() {// 要被代理的对象UserDao target = new UserDao();IUserDao iUserDao = new ProxyUtil<IUserDao>(target).getProxy();iUserDao.add();}}
7、源码的下载地址
源码的下载
1 0
- 10、对于JDK动态代理的一个简单封装ProxyUtil的使用
- java的jdk动态代理简单封装
- JDK动态代理的一个最简单的实例
- 一个简单的例子模拟JDK动态代理
- 简单动态代理实例(使用jdk的proxy)
- JDK的动态代理-面向切面编程简单使用
- 简单的 JDK实现动态代理
- JDK 动态代理的简单理解
- JDK 动态代理的简单理解
- 简单的Jdk动态代理实现:
- 模仿JDK动态代理的简单实践
- JDK的动态代理
- JDK的动态代理
- JDK的动态代理
- JDK的动态代理
- JDK的动态代理
- Jdk的动态代理
- 转载一个对于初级动态代理的生动理解
- java数字位数不够,高位补0
- Java虚拟机之对象探秘
- 快排调用及结构体排序
- Kafka入门学习教程
- 深入才发现,看似简单的html/css也有很丰富的内容-html4部分
- 10、对于JDK动态代理的一个简单封装ProxyUtil的使用
- 为什么要有虚拟地址
- Python Web 7 —— python调用mongodb优化,使用mongoengine
- 自定义控件_属性介绍
- HDU5534--Partial Tree (完全背包)
- CDH问题汇总
- Hadoop2.0的HA介绍
- 基于JoinQuant的算术移动平均线回测
- opencv+KNN实现手写简单数字识别