Spring 自定义AOP与声明式事务执行顺序问题

最近发现一个小问题,在自己的service中使用了声明式事务,并且在service前后使用了自定义AOP来记录日志,发现在service中发生异常时,连带自定义AOP中的记录log操作也会回滚,尝试在自定义AOP的方法中添加声明式事务来设置传播性(改成不启用事务以及启用新事务),然而均不起作用。后来想想两个都是用AOP来实现,执行起来的顺序估计有问题。

 

      查找资料发现可以对多个AOP设置执行顺序,这种情况只要让自定义AOP在前,不包含在事务中,应该就能解决。

      可以设置order参数,值越小,优先级越高,如果不设置,就是优先级最小。

      

比如:

 

设置事务的优先级 设置成2

 

[html]  view plain  copy
 
  1. <!-- 采用@Transactional注解方式使用事务 -->  
  2. annotation-driven transaction-manager="txManager" order="2"/>  

 

设置自定义AOP的优先级 设置成1

扫描二维码关注公众号,回复: 384936 查看本文章

 

[java]  view plain  copy
 
  1. @Service  
  2. @Aspect  
  3. @Order(1)  
  4. public class LogAspect {  
  5. 。。。  
  6. }  



 


经测试解决问题。

猜你喜欢

转载自wddpwzzhao123.iteye.com/blog/2376778
今日推荐