0

我有自定义 JodaJdbcTemplate 类。它是可以执行查询的简单 queryImpl。

例如

jodaJdbcTemplate.update("INSERT INTO bla bla...");

每次执行此方法时,我都需要捕获特定异常(DeadlockLoserDataAccessException )。

我编写了 Aspect 类并具有这样的方面配置:

@Around("execution( * org.springframework.jdbc.core.JodaJdbcTemplate (..))")

获取异常

java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.aspectj.weaver.tools.PointcutParser.resolvePointcutExpression(PointcutParser.java:317)
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:295)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:208)

伙计们,我做错了什么?

4

3 回答 3

1

我已经重新检查了它,切入点execution(* org.springframework.jdbc.core.JodaJdbcTemplate.*(..))将围绕这个类的每个方法运行,如果这是你想要的。现在,如果您想捕获异常,那么您应该考虑@AfterThrowing. 我用 spring-aop-3.2.2.RELEASE 运行这个,所以我可以发送它,如果它仍然不适合你......

于 2013-06-03T12:56:26.310 回答
0
@Aspect
public class LoggingAspect {

   @AfterThrowing(
  pointcut = "execution( * org.springframework.jdbc.core.JodaJdbcTemplate.update(..))",
  throwing= "error")
    public void logAfterThrowing(JoinPoint joinPoint, Throwable error) {
    System.out.println("Exception : " + error);
    }
}
于 2013-06-04T19:07:58.483 回答
0

尝试从“执行(*”->“执行(*”)中删除空间。否则它看起来很好。

于 2013-06-03T09:48:19.003 回答