欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

線程池中使用spring aop事務(wù)增強(qiáng)

 更新時(shí)間:2020年02月09日 10:15:13   作者:filozofio  
這篇文章主要介紹了線程池中使用spring aop事務(wù)增強(qiáng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了線程池中使用spring aop事務(wù)增強(qiáng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

問(wèn)題描述:

在項(xiàng)目里使用了線程池運(yùn)行同一個(gè)類(lèi)的實(shí)例方法,代碼大致如下,運(yùn)行時(shí)發(fā)現(xiàn)job方法的事務(wù)不生效

@Transactional
  public void doJob() {
    EXECOTOR.execute(() ->job());
  }

  @Transactional
  public void job(){
  //db operation 
  }

原因分析:

debug進(jìn)入job方法時(shí),發(fā)現(xiàn)運(yùn)行job方法的實(shí)例是個(gè)普通實(shí)例而不是個(gè)代理對(duì)象,因此無(wú)法實(shí)現(xiàn)aop增強(qiáng)

解決辦法:

在doJob中調(diào)用AopContext.currentProxy()獲取當(dāng)前的代理對(duì)象,在代理對(duì)象上調(diào)用job方法

@Transactional
  public void doJob() {
    AAAService proxy = (AAAService) AopContext.currentProxy();
    EXECOTOR.execute(() ->proxy.job());
  }

  @Transactional
  public void job(){
  //db operation 
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論