检查 Spring 切入点表达式中的注释值
Check annotation value in Spring Pointcut Expression
我正在尝试添加仅适用于 'non- readonly transactions' 的方面,而不适用于 @Transactional(readonly=true)
下面的代码适用于上面有 @Transactional 注释的所有方法。
@AfterReturning("@annotation(org.springframework.transaction.annotation.Transactional)")
public void afterTransaction() {...}
还有一个替代方案,即从 JoinPoint 获取信息,但这很麻烦,我不想走那条路。
文档似乎对此不是很具体。
您可以使用 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);
}
我正在尝试添加仅适用于 'non- readonly transactions' 的方面,而不适用于 @Transactional(readonly=true)
下面的代码适用于上面有 @Transactional 注释的所有方法。
@AfterReturning("@annotation(org.springframework.transaction.annotation.Transactional)")
public void afterTransaction() {...}
还有一个替代方案,即从 JoinPoint 获取信息,但这很麻烦,我不想走那条路。
文档似乎对此不是很具体。
您可以使用 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);
}