SpringAOP 失效解決方案、Spring事務失效


SpringAOP 失效解決方案

 

SpringAOP是基於代理來對目標方法進行增強,但是有的時候又會出現“增強無效”的情況,比如在@Transactional下的某類中的方法內調用了該類的另一個方法,這種情況下,事務有時候會出現不生效的情況。因為,事務也是基於代理來增強目標對象的目標方法的,我們應該獲取代理對象再來調用子方法。

獲取代理對象的三個方法:

 

1. @Autowried 目標類注入進來,用這個注入進來的對象調用子方法即可。

2. 實現ApplicationContextAware接口或者@Autowried ApplicationContext對象,再通過getBean()來獲取。

3. 通過SpringAOP的API來獲取代理對象,這個方法的前提是在啟動類上的@EnableAspectJAutoProxy的注解中加上屬性exposeProxy = true;接下來通過API獲取即可: AopContext.currentProxy() 即可獲取當前類的目標代理對象,記得強轉成當前類,然后調用你想調用的子方法即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM