我有春天方面
@Aspect
@Component
public class SomeAspect
使用服务方法的@Around建议
@Around("execution(* some.pack.SomeService.someMethod(..))")
public Object triggerSome(ProceedingJoinPoint pjp) throws Throwable {
//pre-processing
Object res = pjp.proceed();
additionalService.additionalAction();
return res;
}
所有方法(SomeService.someMethod和AdditionalService.additionalAction)都是@Transactional方法。我搜索解决方案以在一个事务中执行此方法。当[aditionalAction]方法失败时,[someMethod]添加的更改必须回滚。
将@Transactional注释添加到advice方法不起作用。使用@Order注释来配置事务管理器和方面并不能满足我的需要。
是否可以在一个事务中调用此方法?
答案 0 :(得分:-1)
在服务上添加第三种方法,并将其标记为@Transactional
。
@Transactional
Object thirdMethod(){
Object res = pjp.proceed();
additionalService.additionalAction();
return res;
}
并从您的Aspect中调用它:
@Around("execution(* some.pack.SomeService.someMethod(..))")
public Object triggerSome(ProceedingJoinPoint pjp) throws Throwable {
//pre-processing
return thirdMethod();
}