提问者:小点点

检查Spring切入点表达式中的注释值


我试图添加一个仅适用于“非只读事务”的方面,因此不适用于@Transactional(readonly=true)

下面的代码适用于上面有@Transactional注解的所有方法。

@AfterReturning("@annotation(org.springframework.transaction.annotation.Transactional)")
public void afterTransaction() {...}

有一种替代方法是从JoinPoint获取信息,但它很麻烦,我宁愿不走这条路。

文档对此似乎不是很明确。


共1个答案

匿名用户

您可以使用< code>execution切入点,将注释匹配限制在注释具有某些参数值的连接点上。

@AfterReturning("execution(@org.springframework.transaction.annotation.Transactional(readOnly=true) * *(..))")
public void process(JoinPoint joinPoint) {
  System.out.println(joinPoint);
}
@AfterReturning("execution(@org.springframework.transaction.annotation.Transactional(readOnly=true) * *(..)) && @annotation(transactional)")
public void process(JoinPoint joinPoint, Transactional transactional) {
  System.out.println(joinPoint + " -> " + transactional);
}