2013-04-22 356 views
0

我正在使用AOP與服裝註釋來爲方法添加計時器。使用aop處理異常

@Around(value = "@annotation(benchmark)") 
    public void func(final ProceedingJoinPoint joinPoint, final Benchmark benchmark) throws Throwable { 
     //wrap the call to the method with timer 
     final long t0 = System.currentTimeMillis(); 
     logger.error(t0 + " "); 
     joinPoint.proceed(); 
     final long elapsed = (System.currentTimeMillis() - t0); 
     logger.error(elapsed + " "); 
    } 

我希望能夠做一些事情,當從註釋的方法拋出異常。 而且我不知道什麼是正確的方式...

我看了看,發現裏面是:

@AfterThrowing(pointcut = "execution(* com.mycompany.package..* (..))", throwing = "ex") 

據我瞭解@AfterThrowing不給我我想要的,我需要以某種方式緩存僅用基準註釋註釋的方法緩存異常。

有什麼想法?

謝謝!

回答

2

在excecution你可以指定你想趕上例如其中註釋:

@AfterThrowing(pointcut = "execution(@org.aspectj.lang.annotation.Around * com.mycompany.package..* (..))", throwing = "ex") 
0
<aop:config> 
     <aop:aspect id="testInterceptor" ref="testid"> 
      <aop:pointcut expression="execution(* com.mycompany.package..* (..))" 
       id="pointcutid" /> 

      <aop:after-throwing pointcut-ref="pointcutid" 
       throwing="err" method="func" /> 


     </aop:aspect> 
    </aop:config> 


<bean id="testid" class="com.XXX.XXX.ClassNameHavingfuncMethod"> </bean> 

當誤差從com.mycompany.package類的方法,然後FUNC方法叫做拋出。