我正在使用带有服装注释的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
没有给我我想要的东西,我只需要以某种方式来缓存异常,而不是用基准注释注释的方法。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
在执行中,您可以指定要捕获的注释,例如:
@AfterThrowing(pointcut = "execution(@org.aspectj.lang.annotation.Around * com.mycompany.package..* (..))", throwing = "ex")
答案 1 :(得分: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方法。