Java中使用动态代理实现拦截器
来源:互联网 发布:linux源码包安装步骤 编辑:程序博客网 时间:2024/05/21 23:32
拦截器在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。
理解拦截器的核心原理对理解这些开源框架的体系结构至关重要。
下面以一个简单的模型的来说明拦截器的实现的一般方法。
模型分为以下模块:
业务组件:是被代理和被拦截的对象。
代理处理器:实现了InvocationHandler接口的一个对象
代理对象:Proxy对象。
拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法。
代理处理器:实现了InvocationHandler接口的一个对象
代理对象:Proxy对象。
拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法。
客户端:执行业务处理的入口。
以下是模型的实现
一、业务组件:分为业务接口和业务类
public
}
public
}
二、代理处理器:包含了业务对象绑定动态代理类的处理,并实现了InvocationHandler接口的invoke方法。
import java.lang.reflect.InvocationHandler;
importjava.lang.reflect.Method;
importjava.lang.reflect.Proxy;
publicclass DynamicProxyHandler implements InvocationHandler {
private Object business; //被代理对象
private InterceptorClass interceptor = new InterceptorClass(); //拦截器
public Object bind(Object business) {
this.business = business;
return Proxy.newProxyInstance(
//被代理类的ClassLoader
business.getClass().getClassLoader(),
//要被代理的接口,本方法返回对象会自动声称实现了这些接口
business.getClass().getInterfaces(),
//代理处理器对象
this);
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;
interceptor.before();
result=method.invoke(business,args);
interceptor.after();
return null; //To change body of implemented methods use File | Settings | File Templates.
}
}
import
import
public
}
三、拦截器:普通的JavaBean,在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法。
public
}
四、模拟客户端:执行业务处理的入口。
public
}
阅读全文
0 0
- Java中使用动态代理实现拦截器
- 使用Java动态代理实现的拦截器
- JAVA动态代理和方法拦截(使用CGLib实现AOP、方法拦截、委托)
- JAVA动态代理(拦截器)
- JAVA动态代理(拦截器)
- JDK动态代理实现拦截
- Java中动态代理使用
- JAVA动态代理--使用JAVA API实现JAVA动态代理
- 好记性不如烂笔头47-java拦截器-用CGLib实现动态代理(2)
- JDK的动态代理实现调用拦截器中的方法
- 拦截器与动态代理
- Java中动态代理的实现
- Java中动态代理的实现
- Java中动态代理实现示例
- java中动态代理的实现
- Java中动态代理的实现
- java中动态代理模实现接口
- java中动态代理的实现原理
- 罗升阳 51test 博客
- MySQL数据库安装(CentOS操作系统/tar.gz方式)
- 为什么volatile不能保证原子性
- MySQL创建数据库指定字符集
- 464. Can I Win
- Java中使用动态代理实现拦截器
- 使用Redux和ngrx构建更好的Angular2应用(一)
- python 调用opencv读取视频
- 关于 mBaiduMap.animateMapStatus(u);空指针异常
- Learning D3.js d3的path讲解
- java定时执行功能
- SQL Server-聚焦APPLY运算符
- 二进制文件与文本文件有哪些差异
- SpringMVC解决跨域