最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring事務(wù)傳播行為問(wèn)題解決

 更新時(shí)間:2020年01月03日 14:35:41   作者:不死碼農(nóng)  
這篇文章主要介紹了Spring事務(wù)傳播行為問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Spring事務(wù)傳播行為問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、簡(jiǎn)介

Spring事務(wù)配置及相關(guān)說(shuō)明詳見(jiàn):http://m.fzitv.net/article/177710.htm。這里說(shuō)明spring事務(wù)的幾點(diǎn)注意:

1、默認(rèn)只會(huì)檢查回滾RuntimeException的異常。

2、@Transactional注解只能作用于public的方法上,默認(rèn)傳播行為 Propagation.REQUIRED

3、service內(nèi)部方法之間的調(diào)用,不會(huì)被spring攔截到,也即不會(huì)產(chǎn)生事務(wù)

二、坑點(diǎn)

主要的坑點(diǎn)就是在嵌套事務(wù)上,當(dāng)service內(nèi)部方法之間調(diào)用的時(shí)候,很可能會(huì)產(chǎn)生預(yù)期之外的效果。例如下例子:

saveUser保存用戶,如果過(guò)程出現(xiàn)異常,則執(zhí)行saveMsg方法。

public class UserServiceImpl implements UserService{
 
  @Autowired
  private UserDao userDao;
  @Autowired
  private MsgDao msgDao;
  @Autowired
  private MsgService msgService;
    @Autowired
    private UserService userService;
 
   
  @Transactional(propagation = Propagation.REQUIRED)
  public void saveUser(User user) throws Exception {
    System.out.println(user.toString());
    try {
      userDao.saveUser(user);
      int i = 1/0;
//     saveUser2(user);
    } catch (Exception e) {
//     msgService.saveMsg();
//           this.saveMsg();
      userService.saveMsg();
      throw new RuntimeException();
    }
  }
   
  @Transactional(propagation = Propagation.REQUIRES_NEW)
  public void saveMsg() {
    TbMsg msg = TbMsg.builder().name("xiaocao").msg("xiaoxiao").age(27).build();
    msgDao.saveMsg(msg);
  }
}

單元測(cè)試,調(diào)用saveUser方法,并沒(méi)有達(dá)到想要的效果(saveUser異常,SaveMsg隔離級(jí)別是REQUIRES_NEW,理論上應(yīng)該能入庫(kù))。

失敗原因即是上面第一節(jié)中說(shuō)的:同一個(gè)service中的方法調(diào)用,不會(huì)產(chǎn)生新事務(wù)。Spring 事務(wù)的管理控制,主要是通過(guò)AOP的動(dòng)態(tài)代理增強(qiáng)來(lái)實(shí)現(xiàn)的,目標(biāo)對(duì)象本身并沒(méi)有任何的事務(wù)管理能力,都是通過(guò)代理對(duì)象動(dòng)態(tài)增強(qiáng)功能去實(shí)現(xiàn)事務(wù)管理。在同一個(gè)service中的方法調(diào)用,相當(dāng)于是目標(biāo)對(duì)象本身的this調(diào)用,并沒(méi)有經(jīng)過(guò)代理對(duì)象,所以自然的事務(wù)配置的嵌套均無(wú)效。

解決策略:

1、saveMsg移動(dòng)到另一個(gè)service中,在UserServiceImpl中導(dǎo)入MsgService,saveUser中通過(guò)MsgService類(lèi)去調(diào)用。

2、UserServiceImpl中注入自己,通過(guò)注入的自身service進(jìn)行調(diào)用。

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

相關(guān)文章

  • Mysql字段和java實(shí)體類(lèi)屬性類(lèi)型匹配方式

    Mysql字段和java實(shí)體類(lèi)屬性類(lèi)型匹配方式

    這篇文章主要介紹了Mysql字段和java實(shí)體類(lèi)屬性類(lèi)型匹配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot中配置Redis連接池的完整指南

    SpringBoot中配置Redis連接池的完整指南

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中配置Redis連接池的完整指南,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • Mybatis的TypeHandler加解密數(shù)據(jù)實(shí)現(xiàn)

    Mybatis的TypeHandler加解密數(shù)據(jù)實(shí)現(xiàn)

    在我們數(shù)據(jù)庫(kù)中有些時(shí)候會(huì)保存一些用戶的敏感信息,所以就需要對(duì)這些數(shù)據(jù)進(jìn)行加密,那么本文就介紹了Mybatis的TypeHandler加解密數(shù)據(jù)實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • JavaWeb中web.xml初始化加載順序詳解

    JavaWeb中web.xml初始化加載順序詳解

    本篇文章主要介紹了JavaWeb中web.xml初始化加載順序詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 詳解Spring Cloud中Hystrix 線程隔離導(dǎo)致ThreadLocal數(shù)據(jù)丟失

    詳解Spring Cloud中Hystrix 線程隔離導(dǎo)致ThreadLocal數(shù)據(jù)丟失

    這篇文章主要介紹了詳解Spring Cloud中Hystrix 線程隔離導(dǎo)致ThreadLocal數(shù)據(jù)丟失,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Java中的關(guān)鍵字volatile詳解

    Java中的關(guān)鍵字volatile詳解

    這篇文章主要介紹了Java中的關(guān)鍵字volatile,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • JAVA中實(shí)現(xiàn)鏈?zhǔn)讲僮鳎ǚ椒ㄦ湥┑暮?jiǎn)單例子

    JAVA中實(shí)現(xiàn)鏈?zhǔn)讲僮鳎ǚ椒ㄦ湥┑暮?jiǎn)單例子

    這篇文章主要介紹了JAVA中實(shí)現(xiàn)鏈?zhǔn)讲僮鞯睦?模仿jQuery的方法鏈實(shí)現(xiàn),需要的朋友可以參考下
    2014-04-04
  • spring?kafka?@KafkaListener詳解與使用過(guò)程

    spring?kafka?@KafkaListener詳解與使用過(guò)程

    這篇文章主要介紹了spring-kafka?@KafkaListener詳解與使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java編程數(shù)組中最大子矩陣簡(jiǎn)便解法實(shí)現(xiàn)代碼

    Java編程數(shù)組中最大子矩陣簡(jiǎn)便解法實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java編程數(shù)組中最大子矩陣簡(jiǎn)便解法實(shí)現(xiàn)代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • SpringBoot3集成iText實(shí)現(xiàn)PDF導(dǎo)出功能

    SpringBoot3集成iText實(shí)現(xiàn)PDF導(dǎo)出功能

    不知道小伙伴們?cè)陧?xiàng)目中有沒(méi)有遇到過(guò)導(dǎo)出 PDF 的需求,小編在之前的 tienchin 項(xiàng)目中有一個(gè)合同導(dǎo)出的功能,需要將文檔導(dǎo)出為PDF,將文檔導(dǎo)出為 PDF 有很多方案,不同方案的優(yōu)缺點(diǎn)也各不相同,今天小編就和大家演示一個(gè),感興趣的小伙伴跟著小編一起來(lái)看看吧
    2024-10-10

最新評(píng)論

张北县| 甘肃省| 桐庐县| 盐城市| 卫辉市| 中西区| 江安县| 台州市| 石家庄市| 原平市| 贵德县| 若羌县| 峡江县| 深泽县| 嘉兴市| 湘潭县| 读书| 抚远县| 黔西县| 韶山市| 普定县| 南靖县| 健康| 永安市| 策勒县| 铜鼓县| 江永县| 化州市| 龙州县| 武穴市| 教育| 页游| 海淀区| 昌吉市| 施甸县| 华池县| 大关县| 陆川县| 万年县| 莱州市| 乌海市|