java创建动态代理类
来源:互联网 发布:mac暴风影音删除不了 编辑:程序博客网 时间:2024/05/18 02:37
这几天一直在研究aop的问题,发现aop的基础是java的动态代理类,一个例子如下
1.一个接口
2.该接口实现类
3.处理类,类中包括了前置和后置方法
4.测试类
1.一个接口
Java代码
- publicinterface HelloWorld {
- void sayHelloWorld();
- }
public interface HelloWorld { void sayHelloWorld();}
2.该接口实现类
Java代码
- publicclass HelloWorldImplimplements HelloWorld {
- publicvoid sayHelloWorld() {
- System.out.println("Hello World!");
- }
- }
public class HelloWorldImpl implements HelloWorld { public void sayHelloWorld() { System.out.println("Hello World!"); }}
3.处理类,类中包括了前置和后置方法
Java代码
- package proxy;
- imp
ort java.lang.reflect.InvocationHandler; - imp
ort java.lang.reflect.Method; - publicclass HelloWorldHandlerimplements InvocationHandler {
- // 要代理的原始对象
- private Object objOriginal;
- /**
- ** 构造函数
- */
- public HelloWorldHandler(Object obj) {
- this.objOriginal = obj;
- }
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- Object result;
- // 方法调用之前
- doBefore();
- //调用原始对象的方法
- result = method.invoke(this.objOriginal ,args);
- //方法调用之后
- doAfter();
- returnnull;
- }
- privatevoid doBefore()
- {
- System.out.println("before method invoke!");
- }
- privatevoid doAfter()
- {
- System.out.println("after method invoke!");
- }
- }
package proxy;import java.lang.reflect.InvocationHandler;imp ort java.lang.reflect.Method;public class HelloWorldHandler implements InvocationHandler { // 要代理的原始对象 private Object objOriginal; /** ** 构造函数 */ public HelloWorldHandler(Object obj) { this.objOriginal = obj; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result; // 方法调用之前 doBefore(); //调用原始对象的方法 result = method.invoke(this.objOriginal ,args); //方法调用之后 doAfter(); return null; } private void doBefore() { System.out.println("before method invoke!"); } private void doAfter() { System.out.println("after method invoke!"); }}
4.测试类
Java代码
- package proxy;
- imp
ort java.lang.reflect.InvocationHandler; - imp
ort java.lang.reflect.Proxy; - publicclass Test {
- /**
- * @param args
- */
- publicstaticvoid main(String[] args) {
- HelloWorld hw=new HelloWorldImpl();
- InvocationHandler handler=new HelloWorldHandler(hw);
- //创建动态代理对象
- HelloWorld proxy = (HelloWorld) Proxy.newProxyInstance(
- hw.getClass().getClassLoader(),
- hw.getClass().getInterfaces(),
- handler);
- proxy.sayHelloWorld();
- }
- }
- java创建动态代理类
- 黑马程序员 Java创建动态代理类实现Aop编程
- java动态代理对象实例的创建
- Java动态代理-创建动态类及查看其方法列表信息
- Java动态代理-创建动态类的实例对象及调用其方法
- 代理模式与Java动态代理类
- 代理模式与Java动态代理类
- java代理模式及动态代理类
- java动态代理-生成代理类
- Java 代理,动态代理
- Spring系列(1)--创建动态代理类
- 动态代理类的创建实例
- Spring系列(1)--创建动态代理类
- Spring系列(1)--创建动态代理类
- 创建动态代理服务
- 创建动态代理服务
- 创建动态代理
- Java中的动态代理类
- Visual.Assist.X.V10.7.1929的Crack破解补丁.新增5项特性,修正30余处bug. 2013.02.22(Release)
- MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost'
- 异步更新ProgressBar(使用AsyncTask)
- servlet各版本区别以及dynamic web module 版本之间的区别
- 2013腾讯编程马拉松初赛第0场(3月20日)HDU 4502
- java创建动态代理类
- 自然语言处理资源
- CXF
- 转:uboot源码分析(上)
- 用OLE/DOI 实现ABAP导出EXCEL表格
- 流程控制总结
- HDU 4502
- android中xml解析之xmlpull篇
- Session的使用技巧