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

SpringAOP 失效解決方案

 

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

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

 

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章