2013-06-03 80 views
0

我有自定义的JodaJdbcTemplate类。这是简单的queryImpl可以执行查询。正确的AspectJ切入点表达式

例如

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

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

我写的看点类有这样方面的配置:

@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) 

伙计们,我做错了什么?

回答

0

尝试从“执行(*”去掉空间 - >“执行(*” 否则,它看起来没什么问题

+0

没有帮助,不幸的是 –

1

我复查它和切入点execution(* org.springframework.jdbc.core.JodaJdbcTemplate.*(..))将奔波在这每一个方法。如果这是你想要的。 现在,如果你想赶上例外,那么你应该考虑@AfterThrowing。 我已经运行了spring-aop-3.2.2.RELEASE,所以我可以发送它,如果它仍然不适合你...

+0

不,它没有帮助。 ,感谢您的帮助 - 我非常感谢。 –

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); 
    } 
}