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
原因: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
相关文章推荐
- 7种常见的排序算法
- JaxbContext生成xml文件或java类对象转化注解
- Java的接口
- Java 自动装箱与拆箱(Autoboxing and unboxing)
- JAVA对象的初始化顺序
- Spring 配置文件中导入其他外部配置文件
- Hibernate与Spring框架结合时,碰到的当前没有存在session的问题
- java获取项目路径
- java获取当前月第一天和最后一天,上个月第一天和最后一天
- eclipse的一些小问题解决方案
- JVM源码分析之javaagent原理完全解读
- spring boot mybatis mysql
- Java基础理解
- 从零开始搭建opencv3.0交叉编译环境(Ubuntu14.04+eclipse)(四)
- Spring4集成 axis2
- 在Eclipse下,用Maven建立Dynamic Web Project
- Facebook开源动画库 POP-POPSpringAnimation运用
- springmvc接口参数如何解析
- java关键字transient native synchronized final
- Java基础-Map容器的并发访问控制