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

SpringBoot中事務(wù)失效的原因詳解

 更新時(shí)間:2023年10月19日 09:38:35   作者:方圓師兄  
這篇文章主要介紹了SpringBoot中事務(wù)失效的原因詳解,spring中的事務(wù)是依賴AOP的,AOP是通過動(dòng)態(tài)代理實(shí)現(xiàn)的,只有通過代理類訪問的方法才能被攔截,需要的朋友可以參考下

SpringBoot事務(wù)失效的原因

1.數(shù)據(jù)庫是否支持事務(wù)

  • mysql InnoDB(支持事務(wù)) MyISAM(不支持事務(wù))
  • oracle 默認(rèn)支持事務(wù)

2.是否開始事務(wù)

  • 如果沒有開啟事務(wù)需要手動(dòng)開啟 @EnableTransactionManagement
  • 需要在開啟事務(wù)的方法上增加 @Transactional

3.springboot項(xiàng)目中是否注入到springboot里

  • 是否被注入到springboot的一級(jí)緩存里邊,是否被springboot的添加注解所修飾,例如@Controller @RestController @Service @Component 等
  • 增加注解后,是否被@ComponentScan掃描到( @SpringBootApplication 同包下邊也可以)

4.方法是否為private static final 修飾

通過注解開啟事務(wù)本身就需要做代理才可以獲取,方法加上這些修飾就不能被代理了

5.是否try catch了異常、是否throw 了異常

//try catch異常方法失效
try{
int a = 10/0;
}catch(Exception e){
}
//try catch 并throw了異常,事務(wù)生效
try{
int a = 10/0;
}catch(Exception e){
throw new RunTimeException("");
}

6.@Transactional里捕獲的異常是否可以包含拋出的異常

//捕獲的異常和拋出的異常不是包含關(guān)系,事務(wù)就會(huì)失效
@Transactional(rollbackFor = RunTimeException.class)
public void add(){
	throw new IOException("");
}

7.事務(wù)的傳播機(jī)制,是否是非事務(wù)運(yùn)行

傳播機(jī)制解析
REQUIRED如果當(dāng)前存在事務(wù)就加入事務(wù),如果當(dāng)前不存在事務(wù)就創(chuàng)建事務(wù)
REQUIRES_NEW重新創(chuàng)建一個(gè)事務(wù),如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起
SUPPORTS支持當(dāng)前事務(wù),如果沒有事務(wù)就已非事務(wù)方式運(yùn)行
NOT_SUPPORTED已非事務(wù)方式運(yùn)行,如果存在事務(wù)就掛起當(dāng)前事務(wù)
MANDATORY支持當(dāng)前事務(wù),如果沒有事務(wù)就拋出異常
NEVER已非事務(wù)方式運(yùn)行,如果存在事務(wù)就拋出異常
NESTED嵌套事務(wù)運(yùn)行,和REQUIRED類似
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void add(){
	throw new IOException("");
}

8.同一個(gè)類里邊調(diào)用事務(wù)

是否需要走代理,例如注入自己、或使用AopContext

這樣事務(wù)update就會(huì)失效

@Service
public class Order{
	@Transactional
	public void add(){
		new Thread(()->{
			this.update();
		}).start;
	}
	
	@Transactional
	public void update(){}
}

事務(wù)update生效

@Service
public class Order{
	@Autowired
	Order order;
	
	@Transactional
	public void add(){
	    new Thread(()->{
			order.update();
		}).start;
	}
	
	@Transactional
	public void update(){}
}

到此這篇關(guān)于SpringBoot中事務(wù)失效的原因詳解的文章就介紹到這了,更多相關(guān)SpringBoot事務(wù)失效的原因內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在SpringBoot項(xiàng)目中使用JetCache緩存的詳細(xì)教程

    在SpringBoot項(xiàng)目中使用JetCache緩存的詳細(xì)教程

    Spring Boot是一個(gè)非常流行的Java開發(fā)框架,JetCache是一個(gè)基于注解的高性能緩存框架,本文將介紹如何在Spring Boot項(xiàng)目中使用JetCache緩存,并提供一個(gè)詳細(xì)案例來說明如何配置和使用JetCache,需要的朋友可以參考下
    2024-06-06
  • mybatis數(shù)組和集合的長度判斷及插入方式

    mybatis數(shù)組和集合的長度判斷及插入方式

    這篇文章主要介紹了mybatis數(shù)組和集合的長度判斷及插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • MyBatis-Flex實(shí)現(xiàn)分頁查詢的示例代碼

    MyBatis-Flex實(shí)現(xiàn)分頁查詢的示例代碼

    在MyBatis-Flex中實(shí)現(xiàn)分頁查詢時(shí),需要注意維護(hù)一個(gè)獲取數(shù)據(jù)庫總數(shù)的方法,詳細(xì)介紹了UserService、UserServiceImpl類以及Mapper.xml配置,感興趣的可以了解一下
    2024-10-10
  • java時(shí)間戳轉(zhuǎn)換為日期格式的多種方式

    java時(shí)間戳轉(zhuǎn)換為日期格式的多種方式

    本文介紹了五種將Java時(shí)間戳轉(zhuǎn)換為日期格式的方法,包括使用Date類、LocalDateTime類、Instant類、DateUtils類以及自定義時(shí)區(qū),每種方法都有其適用場(chǎng)景,可以根據(jù)具體需求選擇合適的方法,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • IDEA關(guān)閉git管理,文件變成紅色解決方案

    IDEA關(guān)閉git管理,文件變成紅色解決方案

    在軟件開發(fā)中,當(dāng)一個(gè)文件夾內(nèi)的Java項(xiàng)目啟用Git版本控制,通常會(huì)導(dǎo)致該文件夾下所有項(xiàng)目同步開啟Git,這種做法有助于保持項(xiàng)目的一致性和可追溯性,但也可能帶來管理上的復(fù)雜性,如果需要解除某個(gè)項(xiàng)目的Git管理,可以通過IDE的設(shè)置選項(xiàng)進(jìn)行調(diào)整
    2024-10-10
  • Maven中的SnapShot版本和正式版本的區(qū)別

    Maven中的SnapShot版本和正式版本的區(qū)別

    在Nexus倉庫中,一個(gè)倉庫一般分為public(Release)倉和SNAPSHOT倉,本文詳細(xì)的介紹了SnapShot版本和正式版本的區(qū)別,感興趣的可以了解一下
    2021-06-06
  • java核心編程之文件過濾類FileFilter和FilenameFilter

    java核心編程之文件過濾類FileFilter和FilenameFilter

    這篇文章主要為大家詳細(xì)介紹了java文件過濾類FileFilter和FilenameFilter,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Spring 中@Validated 分組校驗(yàn)的使用解析

    Spring 中@Validated 分組校驗(yàn)的使用解析

    這篇文章主要介紹了Spring 中@Validated 分組校驗(yàn)的使用解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 淺談Java代理(jdk靜態(tài)代理、動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理)

    淺談Java代理(jdk靜態(tài)代理、動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理)

    下面小編就為大家?guī)硪黄獪\談Java代理(jdk靜態(tài)代理、動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Mybatis中特殊SQL的執(zhí)行

    Mybatis中特殊SQL的執(zhí)行

    這篇文章主要介紹了Mybatis中特殊SQL的執(zhí)行,介紹內(nèi)容包括模糊查詢、批量刪除、動(dòng)態(tài)設(shè)置表名、添加功能獲取自增的主鍵等相關(guān)資料,需要的小伙伴可以參考一下
    2022-04-04

最新評(píng)論

龙门县| 苍梧县| 宾川县| 梨树县| 宝兴县| 郸城县| 科技| 山西省| 卢湾区| 左权县| 读书| 平昌县| 中方县| 托克托县| 乌海市| 台安县| 阿克苏市| 博乐市| 武功县| 当阳市| 南乐县| 高碑店市| 永城市| 芜湖市| 武川县| 揭东县| 格尔木市| 巴东县| 剑阁县| 扎兰屯市| 灌云县| 沙洋县| 苗栗市| 石门县| 黄石市| 奇台县| 通化县| 新宾| 红河县| 邵阳县| 邹平县|