第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring@Transaction屬性在私有方法上工作嗎?

Spring@Transaction屬性在私有方法上工作嗎?

溫溫醬 2019-10-12 14:07:21
Spring@Transaction屬性在私有方法上工作嗎?如果我有對Springbean中的私有方法進(jìn)行注釋,注釋有效果嗎?如果@Transactional注釋在公共方法上,它工作并打開事務(wù)。public class Bean {   public void doStuff() {      doPrivateStuff();   }   @Transactional   private void doPrivateStuff() {   }}...Bean bean = (Bean)appContext.getBean("bean");bean.doStuff();
查看完整描述

3 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個贊

問題不是私有的,也不是公開的,問題是:它是如何被調(diào)用的,以及您使用的是哪個AOP實(shí)現(xiàn)!

如果您使用(默認(rèn))Spring代理AOP,那么Spring提供的所有AOP功能(如@Transational)只有在調(diào)用通過代理時才會考慮。-通常情況下,如果從另一個豆子。

這有兩個含義:

  • 因?yàn)椴荒軓牧硪粋€bean調(diào)用私有方法(例外是反射),所以它們的

    @Transactional

    注釋沒有被考慮在內(nèi)。
  • 如果該方法是公共的,但它是從同一個bean調(diào)用的,那么它也不會被考慮(只有在使用了Spring代理AOP(默認(rèn))時,這個語句才是正確的)。

@見彈簧參考:第9.6章代理機(jī)構(gòu)

您應(yīng)該使用AspectJ模式,而不是Spring代理,這將解決問題。AspectJ事務(wù)方面甚至被編織成私有方法(Spring3.0檢查)。



查看完整回答
反對 回復(fù) 2019-10-13
?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊

默認(rèn)情況下,@Transactional屬性僅在對從applicationContext獲得的引用調(diào)用帶注釋的方法時才有效。

public class Bean {
  public void doStuff() {
    doTransactionStuff();
  }
  @Transactional
  public void doTransactionStuff() {

  }}

這將打開一個事務(wù):

Bean bean = (Bean)appContext.getBean("bean");bean.doTransactionStuff();

這不會:

Bean bean = (Bean)appContext.getBean("bean");bean.doStuff();

Spring引用:使用@Transaction

注意:在代理模式下(這是默認(rèn)的),只有通過代理傳入的“外部”方法調(diào)用才會被截獲。這意味著“自調(diào)用”,即在目標(biāo)對象中調(diào)用目標(biāo)對象的其他方法的方法,即使被調(diào)用的方法被標(biāo)記為在運(yùn)行時也不會導(dǎo)致實(shí)際事務(wù)。@Transactional!

考慮使用AspectJ模式(請參見下面),如果您希望自己的調(diào)用也與事務(wù)一起包裝。在這種情況下,首先不會有代理;相反,目標(biāo)類將被“編織”(即它的字節(jié)代碼將被修改),以便@Transactional任何方法上的運(yùn)行時行為。



查看完整回答
反對 回復(fù) 2019-10-13
  • 3 回答
  • 0 關(guān)注
  • 325 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號