亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

@Transactional能標記私有方法??

視頻12分鐘左右,生成訂單號方法是一個私有方法,打@Transactional注解起作用?事務注解不是只能對非私有方法起作用嗎??而且老師您打了之后idea也不報紅,我的就報紅。

正在回答

1 回答

可以打在私有方法上,但是沒有意義,報紅的原因應該是idea設置的校驗問題

transactional標簽用于將對應包裝的bean設置成一個新的代理bean對象供外部使用,就是說外部調用這個proxy bean的公共方法時先會調用開啟事務等的切面工作,若設置成私有方法只能類內用this指針調用,這樣被調用的bean是其本身,不是proxy對象,因此沒有transactional切面的意義

5 回復 有任何疑惑可以回復我~
#1

浪潮之巔 提問者

多謝老師解惑!明白啦!
2018-12-25 回復 有任何疑惑可以回復我~
#2

浪潮之巔 提問者

老師,我測試了一下,外層的方法出現異常時,內層生成訂單號操作也回滾了,并沒有開新事物提交。無論這個方法是私有還是共有都隨著外層一起回滾了。怎么回事呢?
2018-12-25 回復 有任何疑惑可以回復我~
#3

龍蝦三少 回復 浪潮之巔 提問者

這是代碼的失誤。。。不應該定義在private方法的切面上,應該將sequence生成定義成單獨的service,然后用public方法去做切面,現在的代碼實現方式等于是沒有用到service生成的切面
2018-12-26 回復 有任何疑惑可以回復我~
#4

浪潮之巔 提問者 回復 龍蝦三少

嗯嗯,多謝老師,因為這個細節又去熟悉了事務嵌套的相關知識,的確同類內方法調用,內層方法是無法實現事務的,因為內層方法是bean本身去調的不是代理對象,所以aop切不進來事務,只能在另外一個類中定義,核心還是要通過動態代理實現事務的切面。您的課的確學到了很多,再次感謝!
2018-12-27 回復 有任何疑惑可以回復我~
#5

少年啊c 回復 龍蝦三少

老師可以發下更改過的代碼嗎,感覺有些地方有些懵
2019-08-03 回復 有任何疑惑可以回復我~
查看2條回復

舉報

0/150
提交
取消

@Transactional能標記私有方法??

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號