@Transactional 使用
生活随笔
收集整理的這篇文章主要介紹了
@Transactional 使用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 .添加位置
1)接口實(shí)現(xiàn)類或接口實(shí)現(xiàn)方法上,而不是接口類中。
2)訪問(wèn)權(quán)限:public 的方法才起作用。@Transactional 注解應(yīng)該只被應(yīng)用到 public 方法上,這是由 Spring AOP 的本質(zhì)決定的。
系統(tǒng)設(shè)計(jì):將標(biāo)簽放置在需要進(jìn)行事務(wù)管理的方法上,而不是放在所有接口實(shí)現(xiàn)類上:只讀的接口就不需要事務(wù)管理,由于配置了@Transactional就需要AOP攔截及事務(wù)的處理,可能影響系統(tǒng)性能。
3)錯(cuò)誤使用:
1.接口中A、B兩個(gè)方法,A無(wú)@Transactional標(biāo)簽,B有,上層通過(guò)A間接調(diào)用B,此時(shí)事務(wù)不生效。2.接口中異常(運(yùn)行時(shí)異常)被捕獲而沒(méi)有被拋出。默認(rèn)配置下,spring 只有在拋出的異常為運(yùn)行時(shí) unchecked 異常時(shí)才回滾該事務(wù),也就是拋出的異常為RuntimeException 的子類(Errors也會(huì)導(dǎo)致事務(wù)回滾),而拋出 checked 異常則不會(huì)導(dǎo)致事務(wù)回滾 。可通過(guò) @Transactional rollbackFor進(jìn)行配置。3.多線程下事務(wù)管理因?yàn)榫€程不屬于 spring 托管,故線程不能夠默認(rèn)使用 spring?的事務(wù),也不能獲取spring 注入的 bean 。在被 spring 聲明式事務(wù)管理的方法內(nèi)開(kāi)啟多線程,多線程內(nèi)的方法不被事務(wù)控制。一個(gè)使用了@Transactional 的方法,如果方法內(nèi)包含多線程的使用,方法內(nèi)部出現(xiàn)異常,不會(huì)回滾線程中調(diào)用方法的事務(wù)。總結(jié)
以上是生活随笔為你收集整理的@Transactional 使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: verilog 除法器
- 下一篇: 扫描二维码,下载Android安装包