線程池中使用spring aop事務增強
更新時間:2020年02月09日 10:15:13 作者:filozofio
這篇文章主要介紹了線程池中使用spring aop事務增強,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了線程池中使用spring aop事務增強,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
問題描述:
在項目里使用了線程池運行同一個類的實例方法,代碼大致如下,運行時發(fā)現job方法的事務不生效
@Transactional
public void doJob() {
EXECOTOR.execute(() ->job());
}
@Transactional
public void job(){
//db operation
}
原因分析:
debug進入job方法時,發(fā)現運行job方法的實例是個普通實例而不是個代理對象,因此無法實現aop增強
解決辦法:
在doJob中調用AopContext.currentProxy()獲取當前的代理對象,在代理對象上調用job方法
@Transactional
public void doJob() {
AAAService proxy = (AAAService) AopContext.currentProxy();
EXECOTOR.execute(() ->proxy.job());
}
@Transactional
public void job(){
//db operation
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
java web學習_淺談request對象中get和post的差異
下面小編就為大家?guī)硪黄猨ava web學習_淺談request對象中get和post的差異。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
Java tomcat環(huán)境變量及idea配置解析
這篇文章主要介紹了Java tomcat環(huán)境變量及idea配置解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-12-12

