0

我正在使用带有服装注释的 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并没有给我想要的东西,我需要以某种方式仅从使用基准注释注释的方法中缓存异常。

任何想法?

谢谢!

4

2 回答 2

2

在执行中,您可以指定要捕获的注释,例如:

@AfterThrowing(pointcut = "execution(@org.aspectj.lang.annotation.Around * com.mycompany.package..* (..))", throwing = "ex")
于 2013-04-22T08:10:23.257 回答
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 方法。

于 2013-04-22T09:14:11.617 回答