Classworking 工具箱: 将 aspect 放到 werk 中
2010-03-18 00:00:00 来源:WEB开发网从名字上可以看出,around advice 包围了 pointcut 执行。当要执行 pointcut 时调用它,并且具有决定什么时候执行 —— 甚至是否执行 —— pointcut 的灵活性。在清单 6 的代码中,我尽量使 around advice 的处理简单化。在这里,advice 代码(traceLong() 方法)首先在当前缩进位置打印方法名和参数值。然后调用方法并保存结果,然后在比当前缩进位置再缩进的位置打印方法名和返回值。
需要调整 XML 配置以使用这个新的 advice,但是这种改变很容易。下面是文件中的 aspect 元素,改变的地方用粗体标出:
<package name="com.sosnoski.aspectwerkz">
<aspect class="TraceAspect">
<pointcut name="longMethod"
expression="execution(long ..(..))"/>
<advice name="traceLong" type="around"
bind-to="longMethod"/>
</aspect>
</package>
清单 7 给出了用这种新的 advice 产生的输出。
清单 7. 带缩进和值打印的输出
Entering method fibo(6)
Entering method fibo(5)
Entering method fibo(4)
Entering method fibo(3)
Entering method fibo(2)
Leaving method fibo<1
Entering method fibo(1)
Leaving method fibo<1
Leaving method fibo<2
Entering method fibo(2)
Leaving method fibo<1
Leaving method fibo<3
Entering method fibo(3)
Entering method fibo(2)
Leaving method fibo<1
Entering method fibo(1)
Leaving method fibo<1
Leaving method fibo<2
Leaving method fibo<5
Entering method fibo(4)
Entering method fibo(3)
Entering method fibo(2)
Leaving method fibo<1
Entering method fibo(1)
Leaving method fibo<1
Leaving method fibo<2
Entering method fibo(2)
Leaving method fibo<1
Leaving method fibo<3
Leaving method fibo<8
Fibo[6] is 8
Tags:Classworking 工具箱 aspect
编辑录入:爽爽 [复制链接] [打 印]- ››AspectJ 和模仿对象的测试灵活性:用“test-only”...
- ››Classworking 工具箱: 注释(Annotation)与 ASM
- ››Classworking 工具箱: ASM classworking
- ››Classworking 工具箱: 泛型与 ASM
- ››Classworking 工具箱: 分析泛型数据结构
- ››Classworking 工具箱: 将 aspect 放到 werk 中
- ››AspectJ 和模仿对象的测试灵活性
- ››Aspectwerkz 2.0开发企业AOP快速入门
- ››Classworking工具箱:反射泛型
- ››Classworking 工具箱: 反射泛型
- ››AspectJ: 通往AOSD之路的最佳军火
更多精彩
赞助商链接