WEB开发网
开发学院软件开发Java Classworking 工具箱: 将 aspect 放到 werk 中 阅读

Classworking 工具箱: 将 aspect 放到 werk 中

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 从名字上可以看出,around advice 包围了 pointcut 执行,Classworking 工具箱: 将 aspect 放到 werk 中(7),当要执行 pointcut 时调用它,并且具有决定什么时候执行 —— 甚至是否执行 ——

从名字上可以看出,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 

上一页  2 3 4 5 6 7 8 9  下一页

Tags:Classworking 工具箱 aspect

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接