前面讲过一个关于AspectJ的例子,其实不用这么麻烦,现在可以在他的官方网站下载最新的JAR包,直接安装就可以了,安装完成以后有两个地方海上是需要设置一下1.PATH里面加上${AspectJ HOME}\BIN2.CLASSPATH里面加上${AspectJ HOME}\LIB这样环境就OK了,很简单把!下面就实现一个经典的HELLO WORLD!例子:class Test { public void helloWorld() { System.out.println("Hello World"); } public static void main(String args[]) { Test test = new Test(); test.helloWorld(); }}这个是个纯JAVA文件,没有什么好说的,下面看看ASPECTpublic aspect TestAspect { pointcut outputLog() : call(public void helloWorld()); before() : outputLog() { System.out.println("Before Call"); }}下面我简单的讲一下上面语句的意思:call(public
void helloWorld());中的public void helloWorld()在AOP中间叫做JOIN
POINT就是宿主语言的一个方法,也叫观察点,编写任何一个ASPECT程序都要先在宿主语言中找好这个观察点,简单的说就是主程序的功能,也就是你要
监视的切入点,CALL叫做指示符,有点想关键字,其意思是监测方法的执行,和他意思差不多的有个叫做EXECUTION的,其差别在与:CALL:只要调用其监视的方法,改POINTCUT就起作用EXECUTION:侧重于方法的执行,要整个方法执行完了才开始匹配有
了JOIN POINT就可以定义POINTCUT了:pointcut outputLog() : call(public void
helloWorld());pointcut
的完整定义<pointcut>::=<access_type><point_name>
({parameters}):{designator[&& || ]};切点有点象注册一个事件.当监视到了public void helloWorld()这个方法的执行就要发出通知,有点象FIRE哈 before() : outputLog() { System.out.println("Before Call"); }起语法格式入下:advice::=[return type] type of advice"(formails)" [thowstypelist]":"pointcut"[advice body]"编译:AJC Test.java TestAspect .javajava Test运行结果:Before CallHello World |