您的位置:首页 > 编程语言 > Java开发

spring aop 和Transaction一起使用执行顺序问题

2016-02-16 00:00 645 查看
在开发中遇到,aop拦截事物方法,先执行了,自己写的切面,Transaction还没提交

原因:spring Transaction也是aop实现,spring 先执行了自己定义的切面aop

解决方法:设置aop执行顺序,order越小越先执行

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" order="0"/>

@Component
@Aspect
@Order(1)
public class YourAspect

网上摘抄了一段各注解执行顺序,待测

Spring 中通知的类型:

Around org.aopalliance.intercept.MethodInterceptor 栏截对目标对象方法的调用
Before org.springframework.aop.MethodBeforAdvice 在目标方法被调用之前调用
After org.springframework.aop.AfterReturningAdvice 当目标方法被调用之后调用

Thorws org.springframework.aop.ThrowsAdvice 当目标方法抛出异常时调用

程序正常执行顺序:

执行前 -环绕通知 Around

执行前 - 通知 Before

POINT - 切入点 方法前执行 @Before

POINT - 切入点 环绕方法前执行 @Around

POINT - 切入点 方法后执行 @AfterReturning

POINT - 切入点 环绕方法后执行 @Around

执行后 - 通知 After

执行后 - 环绕通知 Around

程序抛出异常执行顺序:

执行前 -环绕通知 Around

执行前 - 通知 Before

POINT - 切入点 方法前执行 @Before

POINT - 切入点 环绕方法前执行 @Around

切入点异常处理通知 @AfterThrowing

异常处理通知 Thorws
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: