當我練習使用Spring AOP對service層所有方法進行日志輸出,以及對涉及數據修改的方法進行事務控制,實現異常回滾的時候,在配置文件的<aop:config>中需要同時配置<aop:advisor>和<aop:aspect>,其中前者實現事務管理,后者實現日志輸出。
問題:但在實際操作過程中發現日志輸出沒問題,但異常事務並沒有進行回滾操作。
原因分析:后來發現是因為aop的優先級不同,造成執行順序不一樣,而事務的優先級高,所有先執行,造成沒有異常回滾。
解決辦法:設置order屬性,order值越小,優先級越高,把<aop:aspect> 的order設為1,<aop:advisor>的order設為3,問題得到解決