动态代理和nanning AOP-3
来源:互联网 发布:pc桌面软件开发 编辑:程序博客网 时间:2024/05/18 00:32
动态代理和nanning AOP-3
用nanning来实现Interception
关键字: AOP Nanning Dynamic proxy AOP 动态代理
Interception ,是AOP的特点之一,但是Interception这个名次并不是和AOP的概念一同产生的。顾名思义,Interception就是拦截。本系列的第一篇文章使用java1.3提供的动态代理功能实现了一个Interception的例子,演示了在某个方法执行前和执行后进行了拦截(Interception)。
本文我们用nanning AOP来实现同样的功能。
注意AOP中的Interception和普通概念的interception是不同的。我们最后再讨论这个问题。
代码如下:
package tcftest;
import com.tirsen.nanning.AspectInstance;
import com.tirsen.nanning.Aspects;
import com.tirsen.nanning.Intf;
import com.tirsen.nanning.IntfImpl;
import com.tirsen.nanning.MixinInstance;
import com.tirsen.nanning.NullInterceptor;
public class tcftest {
public tcftest() {
}
public static void main(String[] args) {
AspectInstance aspectInstance = new AspectInstance();
MixinInstance mixinInstance = new MixinInstance();
mixinInstance.setInterfaceClass(Intf.class);
mixinInstance.setTarget(new IntfImpl());
mixinInstance.addInterceptor(new NullInterceptor());
aspectInstance.addMixin(mixinInstance);
Object bigMomma = aspectInstance.getProxy();
Intf intf = (Intf) bigMomma;
intf.call();
}
}
消息拦截接口如下:
package com.tirsen.nanning;
import com.tirsen.nanning.definition.SingletonInterceptor;
public class NullInterceptor implements MethodInterceptor, SingletonInterceptor {
public NullInterceptor() {
};
public Object invoke(Invocation invocation) throws Throwable {
System.out.println("tcf : befor call me , right? ");
return invocation.invokeNext();
}
}
输出结果如下:
tcf : befor call me , right?
call()
关于:
Intf.class
IntfImpl.class
类的代码可以参考上文实现,因为很简单,就不贴出来了。
NullInterceptor.java 的代码,可以在nanning提供的测试包中找到。
我在其中加入了: System.out.println("tcf : befor call me , right? ");
另外:Eclipse M8 的中文问题我还没有解决,谁知道的话请告诉我,谢谢。
注意上面代码的蓝色代码:
可以看到:intf.call() 在这个方法执行之前打印了我们预期的结果,成功地实现了消息的拦截。这个效果和本系列的第一篇文章介绍的java动态代理实现的效果一样。
现在是时候介绍用 java动态代理和nanning 实现Interception 的不同。
AOP中的Interception是允许动态指定的,这个动态指定的点就是point cut。
相信熟悉aop的读者对point cut 都了解。而普通的Interception就不能这样了,是固定写在java程序中。 当然如果你通过设计模式,配置文件等可以让Interception动态指定的话,那你也基本作了一个AOP 的Interception 。
这就是Nanning已经作的工作。
下文我们分析nanningAOP的实现原理。
作者:田春峰
专栏地址:http://www.csdn.net/develop/author/NetAuthor/accesine960/
- 动态代理和nanning AOP-3
- 动态代理和nanning AOP(1)
- 动态代理和nanning AOP-2 实现Introduction
- AOP和动态代理
- 动态代理(2)----动态代理和AOP
- 动态代理(2)----动态代理和AOP .
- Spring AOP和动态代理
- spring aop和动态代理
- spring AOP 静态代理和动态代理
- Aop 代理 动态代理
- 黑马程序员_Java高新技术(3)动态代理和AOP技术
- AOP编程之JDK动态代理和Cglib动态代理
- 使用反射生成JDK动态代理---动态代理和AOP
- AOP之JDK动态代理和CGLib动态代理
- 反射 生成JDK动态代理和AOP
- AOP技术应用和研究--动态代理
- Java动态代理和AOP编程
- 动态代理和AOP切面编程
- (15)Shark工作流的实现和WMFC&OMG规范的对比
- (16)Shark工作流的实现和WMFC&OMG规范的对比
- 使用Filter指定浏览器来缓存或不缓存服务器数据
- 动态代理和nanning AOP(1)
- 动态代理和nanning AOP-2 实现Introduction
- 动态代理和nanning AOP-3
- 用CreateProcess读取Console程序的显示信息和返回结果
- 用 API 做的 ServerSocket 例子
- 如何使广告条自动运行,仅供学习参考
- 如何在启动机器时自动运行adsl拨号(1)
- 如何在启动机器时自动运行adsl拨号(2)
- VC6.0中使用Stream Object读取数据中流文件并显示Bmp,JPG等图片
- Common Control - The VB Way (1)
- OPENFILENAME 新元素初探