精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試突擊:說一下 Spring 事務傳播機制?

開發 前端
Spring 事務傳播機制是包含多個事務的方法在相互調用時,事務是如何在這些方法間傳播的。

Spring 事務傳播機制是指,包含多個事務的方法在相互調用時,事務是如何在這些方法間傳播的。

既然是“事務傳播”,所以事務的數量應該在兩個或兩個以上,Spring 事務傳播機制的誕生是為了規定多個事務在傳播過程中的行為的。比如方法 A 開啟了事務,而在執行過程中又調用了開啟事務的 B 方法,那么 B 方法的事務是應該加入到 A 事務當中呢?還是兩個事務相互執行互不影響,又或者是將 B 事務嵌套到 A 事務中執行呢?所以這個時候就需要一個機制來規定和約束這兩個事務的行為,這就是 Spring 事務傳播機制所解決的問題。

Spring 事務傳播機制有哪些?

Spring 事務傳播機制可使用 @Transactional(propagation=Propagation.REQUIRED) 來定義,Spring 事務傳播機制的級別包含以下 7 種:

  1. Propagation.REQUIRED:默認的事務傳播級別,它表示如果當前存在事務,則加入該事務;如果當前沒有事務,則創建一個新的事務。
  2. Propagation.SUPPORTS:如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續運行。
  3. Propagation.MANDATORY:(mandatory:強制性)如果當前存在事務,則加入該事務;如果當前沒有事務,則拋出異常。
  4. Propagation.REQUIRES_NEW:表示創建一個新的事務,如果當前存在事務,則把當前事務掛起。也就是說不管外部方法是否開啟事務,Propagation.REQUIRES_NEW 修飾的內部方法會新開啟自己的事務,且開啟的事務相互獨立,互不干擾。
  5. Propagation.NOT_SUPPORTED:以非事務方式運行,如果當前存在事務,則把當前事務掛起。
  6. Propagation.NEVER:以非事務方式運行,如果當前存在事務,則拋出異常。
  7. Propagation.NESTED:如果當前存在事務,則創建一個事務作為當前事務的嵌套事務來運行;如果當前沒有事務,則該取值等價于PROPAGATION_REQUIRED。

以上 7 種傳播機制,可根據“是否支持當前事務”的維度分為以下 3 類:

看到這里,有人可能會說:說了這么多,我也看不懂啊,即使看懂了,我也記不住啊?這要咋整?

沒關系,接下來我們用一個例子,來說明這 3 類事務傳播機制的區別。

以情侶之間是否要買房為例,我們將以上 3 類事務傳播機制可以看作是戀愛中的 3 類女生類型:

  • 普通型
  • 強勢型
  • 懂事型

這三類女生如下圖所示:

支持當前事務的“女生”,這里的事務指的是“房子”,它分為 3 種(普通型女生):

  • Propagation.REQUIRED(需要有房子):有房子了咱們一起住,沒房子了咱們一起賺錢買房子。
  • Propagation.SUPPORTS(可以有房子):有房子了就一起住,沒房子了咱們就一起租房子。
  • Propagation.MANDATORY(強制有房子):有房子了就一起住,沒房子了就分手。

不支持當前事務的“女生”也分為 3 種(強勢型或者叫事業型):

  • Propagation.REQUIRES_NEW:不要你的房子,必須一起賺錢買房子。
  • Propagation.NOT_SUPPORTED:不要你的房子,必須一起租房子。
  • Propagation.NEVER:必須一起租房子,你有房子就分手。

最后一種是嵌套性事務 Propagation.NESTED,它屬于懂事型女友,如果有房子了就以房子為基礎做點小生意,賣個花生、水果啥的,如果買賣成了,那就繼續發展;如果失敗了,至少還有房子;如果沒房子也沒關系,一起賺錢買房子。

事務傳播機制使用與演示

接下來我們演示一下事務傳播機制的使用,以下面 3 個最典型的事務傳播級別為例:

  • 支持當前事務的 REQUIRED;
  • 不支持當前事務的 REQUIRES_NEW;
  • 嵌套事務 NESTED。

下來我們分別來看。

事務傳播機制的示例,需要用到以下兩張表:

-- 用戶表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`password` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
`createtime` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC;
-- 日志表
CREATE TABLE `log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` text NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

創建一個 Spring Boot 項目,核心業務代碼有 3 個:UserController、UserServcie 以及 LogService。在 UserController 里面調用 UserService 添加用戶,并調用 LogService 添加日志。

REQUIRED 使用演示

REQUIRED 支持當前事務。

UserController 實現代碼如下,其中 save 方法開啟了事務:

@RestController
public class UserController {
@Resource
private UserService userService;
@Resource
private LogService logService;
@RequestMapping("/save")
@Transactional
public Object save(User user) {
// 插入用戶操作
userService.save(user);
// 插入日志
logService.saveLog("用戶插入:" + user.getName());
return true;
}
}

UserService 實現代碼如下:

@Service
public class UserService {
@Resource
private UserMapper userMapper;
@Transactional(propagation = Propagation.REQUIRED)
public int save(User user) {
return userMapper.save(user);
}
}

LogService 實現代碼如下:

@Service
public class LogService {
@Resource
private LogMapper logMapper;
@Transactional(propagation = Propagation.REQUIRED)
public int saveLog(String content) {
// 出現異常
int i = 10 / 0;
return logMapper.saveLog(content);
}
}

執行結果:程序報錯,兩張表中都沒有插入任何數據。

執行流程描述:

  1. 首先 UserService 中的添加用戶方法正常執行完成。
  2. LogService 保存日志程序報錯,因為使用的是 UserController 中的全局事務,所以整個事務回滾,步驟 1 中的操作也跟著回滾。
  3. 所以數據庫中沒有添加任何數據。

REQUIRED_NEW 使用演示

REQUIRED_NEW 不支持當前事務。

UserController 實現代碼:

@RequestMapping("/save")
@Transactional
public Object save(User user) {
// 插入用戶操作
userService.save(user);
// 插入日志
logService.saveLog("用戶插入:" + user.getName());
return true;
}

UserService 實現代碼:

@Service
public class UserService {
@Resource
private UserMapper userMapper;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public int save(User user) {
System.out.println("執行 save 方法.");
return userMapper.save(user);
}
}

LogService 實現代碼:

@Service
public class LogService {
@Resource
private LogMapper logMapper;

@Transactional(propagation = Propagation.REQUIRES_NEW)
public int saveLog(String content) {
// 出現異常
int i = 10 / 0;
return logMapper.saveLog(content);
}
}

程序執行結果:

User 表中成功添加了一條用戶數據,Log 表執行失敗,沒有加入任何數據,但它并沒有影響到 UserController 中的事務執行。

通過以上結果可以看出:LogService 中使用的是單獨的事務,雖然 LogService 中的事務執行失敗了,但并沒有影響 UserController 和 UserService 中的事務。

NESTED 使用演示

NESTED 是嵌套事務。

UserController 實現代碼如下:

@RequestMapping("/save")
@Transactional
public Object save(User user) {
// 插入用戶操作
userService.save(user);
return true;
}

UserService 實現代碼如下:

@Transactional(propagation = Propagation.NESTED)
public int save(User user) {
int result = userMapper.save(user);
System.out.println("執行 save 方法.");
// 插入日志
logService.saveLog("用戶插入:" + user.getName());
return result;
}

LogService 實現代碼如下:

@Transactional(propagation = Propagation.NESTED)
public int saveLog(String content) {
// 出現異常
int i = 10 / 0;
return logMapper.saveLog(content);
}

最終執行結果,用戶表和日志表都沒有添加任何數據。

執行流程描述:

  1. UserController 中調用了 UserService 的添加用戶方法,UserService 使用 NESTED 循環嵌套事務,并成功執行了添加用戶的方法。
  2. UserService 中調用了 LogService 的添加方法,LogService 使用了 NESTED 循環嵌套事務,但在方法執行中出現的異常,因此回滾了當前事務。
  3. 因為 UserService 使用的是嵌套事務,所以發生回滾的事務是全局的,也就是說 UserService 中的添加用戶方法也被回滾了,最終執行結果是用戶表和日志表都沒有添加任何數據。

總結

Spring 事務傳播機制是包含多個事務的方法在相互調用時,事務是如何在這些方法間傳播的。事務的傳播級別有 7 個,支持當前事務的:REQUIRED、SUPPORTS、MANDATORY;不支持當前事務的:REQUIRES_NEW、NOT_SUPPORTED、NEVER,以及嵌套事務 NESTED,其中 REQUIRED 是默認的事務傳播級別。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-06-29 11:01:05

MySQL事務隔離級別

2022-09-05 07:06:59

BeanSpring

2023-09-12 14:56:13

MyBatis緩存機制

2022-01-13 06:59:40

HashMap底層面試

2022-10-09 20:52:19

事務隔離級別傳播機制

2022-05-18 07:43:09

Exchange交換器JUC

2023-02-02 07:06:10

2023-10-30 07:36:19

Spring事務傳播機制

2022-02-17 08:02:08

線程Java生命周期

2022-03-09 07:35:24

線程池線程參數

2022-07-20 07:29:55

TCPIP協議

2023-02-18 13:34:14

Nacos健康檢查機制

2022-09-19 06:16:23

事務隔離級別Spring

2025-03-10 07:05:07

2023-02-06 07:01:51

2021-07-28 10:08:19

類加載代碼塊面試

2022-06-07 12:03:33

Java內存模型

2022-06-06 15:33:20

線程Java釋放鎖

2023-02-08 08:32:41

輪詢鎖

2023-11-02 07:52:30

Java工具
點贊
收藏

51CTO技術棧公眾號

av观看免费在线| 91久久久久久国产精品| 亚洲天堂资源在线| 免费成人美女女| 亚洲欧美怡红院| 国产精品视频入口| 一级久久久久久| 久久久久久久久国产一区| 欧美精品一区二区三区视频| 青青在线视频免费| 羞羞污视频在线观看| 91免费看`日韩一区二区| 国产精品久久久久久影视| 99久久精品久久亚洲精品| 狠狠一区二区三区| 在线播放/欧美激情| 国产伦精品一区二区三区四区视频_| 国产高清免费在线播放| 成人动漫av在线| 国产裸体写真av一区二区| 日韩在线观看第一页| 郴州新闻综合频道在线直播| 亚洲精品在线电影| 三级性生活视频| 人在线成免费视频| 一区二区三区鲁丝不卡| 亚洲精品乱码久久久久久蜜桃91 | 精品欧美久久久| 污视频免费在线观看网站| caoporn视频在线| 亚洲三级在线观看| 亚洲一区影院| 蜜桃视频在线观看视频| 成人h动漫精品一区二区| 成人在线视频网站| 亚洲视频一区在线播放| 久久精品毛片| 欧美一区二区三区……| 国产精品99精品无码视| 欧美91视频| 日韩在线www| 国产亚洲精品熟女国产成人| 婷婷激情久久| 日韩成人网免费视频| 少妇丰满尤物大尺度写真| 日韩欧乱色一区二区三区在线 | 亚洲成人久久精品| 精品在线观看免费| 国产精品亚洲第一区| www.av88| 欧美aa在线视频| 国产精品高精视频免费| 欧美国产一级片| 视频在线观看一区| 日本精品一区二区三区在线播放视频| 日韩污视频在线观看| 亚洲狠狠婷婷| 性欧美视频videos6一9| 日韩 国产 在线| 亚洲精品偷拍| 日本久久亚洲电影| 成人h动漫精品一区二区下载| 午夜亚洲性色福利视频| 欧日韩不卡在线视频| 亚洲av无码精品一区二区| 日本在线不卡视频| 成人性生交xxxxx网站| 国产精品无码在线播放| 国产剧情一区在线| 国产精品播放| 色资源在线观看| 国产拍欧美日韩视频二区| 日韩一区二区三区资源| 人人干在线视频| 亚洲人成影院在线观看| 日韩精品在线中文字幕| 毛片无码国产| 777奇米成人网| 秋霞午夜鲁丝一区二区| 精品综合久久88少妇激情| 亚洲毛片在线免费观看| 99久久99久久精品免费看小说.| 久久婷婷蜜乳一本欲蜜臀| 久久久精品在线观看| 国产一二三四在线| 老牛嫩草一区二区三区日本 | 777久久精品一区二区三区无码| 麻豆蜜桃在线| 色94色欧美sute亚洲13| 日本精品一区在线| 色哟哟精品丝袜一区二区| 中文字幕在线国产精品| 久久这里只有精品国产| 久久在线91| 亚洲综合精品伊人久久| 青青草视频在线观看| 国产精品剧情在线亚洲| 免费国产a级片| 日本成人一区二区| 亚洲韩国青草视频| 在线免费看av网站| 久久精品二区三区| 99国产超薄丝袜足j在线观看| 手机福利小视频在线播放| 亚洲视频在线一区观看| 国产日产欧美视频| 视频精品一区| 色999日韩欧美国产| 青青草av在线播放| 国产精品一品视频| 亚洲美女搞黄| 二区三区不卡| 精品国产91乱码一区二区三区| 色欲AV无码精品一区二区久久 | 黄频网站在线观看| 亚洲欧美中日韩| 成人在线看视频| 大奶一区二区三区| 久久夜色精品国产欧美乱| 人妻丰满熟妇av无码区| 成人一区二区三区视频在线观看 | 欧美性一级生活| 亚洲一区二区三区综合| 欧美精品色网| 91最新在线免费观看| eeuss影院www在线播放| 色综合中文综合网| 亚洲一区二区三区综合| 在线欧美亚洲| 成人情视频高清免费观看电影| 免费av网站在线看| 欧美三区免费完整视频在线观看| 国产精品久久久久久久无码| 欧美日本一区二区高清播放视频| 国产区亚洲区欧美区| 国产黄色在线| 色欧美片视频在线观看| 中文字幕在线观看的网站| 在线免费观看欧美| 国产综合动作在线观看| gogo久久| 亚洲国产天堂网精品网站| 久草免费在线观看视频| 成人综合在线视频| 成人免费视频91| 老司机在线精品视频| 国语自产精品视频在免费| 黄色av小说在线观看| 亚洲丶国产丶欧美一区二区三区| 国产精品熟女一区二区不卡| 综合一区二区三区| 国产精品久久久久久久小唯西川| av大片在线| 欧美成人官网二区| 久久视频免费在线观看| av中文一区二区三区| 亚洲熟妇国产熟妇肥婆| 伊人久久大香线蕉无限次| 国产成人极品视频| 欧美成人精品一区二区男人看| 欧美日韩免费一区二区三区| 国精产品一区一区二区三区mba| 激情文学综合丁香| 成人短视频在线观看免费| 91精品啪在线观看国产爱臀| 国产做受69高潮| 香蕉久久国产av一区二区| 色综合久久综合网97色综合 | 青青久久aⅴ北条麻妃| 黄色av网址在线免费观看| 欧美视频完全免费看| 亚洲色图 激情小说| 国产一区二区三区免费看| 国产精品无码电影在线观看| 日本午夜精品| 国产综合香蕉五月婷在线| 免费在线国产视频| 亚洲欧美另类人妖| 国产一区二区小视频| 亚洲主播在线播放| av男人的天堂av| 国产一区二区美女| 日韩在线综合网| 久久视频在线| 精品国产免费一区二区三区 | 日韩精品一卡二卡三卡四卡无卡| 亚洲成人18| 欧美日韩黄网站| 青青草成人在线| 黄视频网站在线| 日韩成人网免费视频| 夜夜狠狠擅视频| 亚洲1区2区3区4区| 性欧美一区二区| 国产凹凸在线观看一区二区 | 国产精品一区二区在线观看不卡| 国产精品12345| 91青青国产在线观看精品| 国产综合 伊人色| 色综合久久久| 国产91精品久久久久久| 91香蕉在线观看| 亚洲午夜久久久影院| 免费激情视频网站| 欧美丰满少妇xxxbbb| av大片在线免费观看| 亚洲三级在线免费观看| 国产美女免费网站| 99这里只有精品| 人妻精油按摩bd高清中文字幕| 天堂va蜜桃一区二区三区| 福利在线一区二区| 99久久婷婷国产综合精品电影√| 久久综合福利| www.爱久久| 97人人澡人人爽| 欧美激情三区| 国产精品91视频| 欧美极品videos大乳护士| 欧美成人在线影院| 色网站免费在线观看| 国产亚洲成av人片在线观看桃| 欧美熟妇另类久久久久久不卡| 制服丝袜中文字幕一区| 最新中文字幕第一页| 欧美性猛交xxxx久久久| 四虎永久在线精品| 亚洲一区欧美一区| 欧美成人黄色网| 综合欧美一区二区三区| 精品人妻中文无码av在线| 26uuu国产电影一区二区| 国产大尺度视频| 高清不卡在线观看av| 人妻精品久久久久中文字幕69| 激情深爱一区二区| 亚洲天堂网2018| 麻豆91小视频| 亚洲 欧美 另类人妖| 欧美aa在线视频| 亚洲这里只有精品| 美女性感视频久久| 性生活免费在线观看| 热久久久久久久| 亚洲欧美自拍另类日韩| 美女视频网站黄色亚洲| 日本特黄a级片| 美国av一区二区| 国产美女18xxxx免费视频| 精品一区二区三区免费观看| 日韩在线一区视频| 国产一区在线精品| 色婷婷狠狠18禁久久| 国产成人免费高清| 人妖粗暴刺激videos呻吟| 99免费精品在线观看| 黄色工厂在线观看| 国产欧美一区二区三区网站| 国产一二三四视频| 自拍视频在线观看一区二区| 亚洲xxxx3d动漫| 亚洲午夜一二三区视频| 日韩激情在线播放| 一本久久a久久精品亚洲| 久久久久久久亚洲| 欧美高清精品3d| 亚洲黄色在线免费观看| 日韩av在线直播| 国产视频网站在线| 久久精品国产亚洲7777| 怡红院av在线| 欧美一区二粉嫩精品国产一线天| 青青热久免费精品视频在线18| 国产中文字幕91| 懂色av一区二区| 日本一区二区三区视频在线播放| 久久国产亚洲精品| www.avtt| 日韩av高清在线观看| 少妇愉情理伦片bd| 97久久精品人人澡人人爽| 欧美波霸videosex极品| 亚洲精品欧美二区三区中文字幕| 成人高潮免费视频| 欧美日韩裸体免费视频| 中文字幕久久网| 精品区一区二区| 国产高清视频在线观看| 色与欲影视天天看综合网| 周于希免费高清在线观看| 91精品久久久久久久久青青 | 亚洲韩国欧洲国产日产av | 日韩成人av在线资源| 一区二区免费在线观看| 亚洲精品极品| 国产精品自在自线| 久久综合色之久久综合| 午夜精品福利在线视频| 色婷婷久久99综合精品jk白丝| 99国产精品99| 夜夜嗨av一区二区三区免费区| 国产蜜臀一区二区打屁股调教| 国产z一区二区三区| 日本成人精品| 亚洲视频电影| 国产九九精品| 亚洲乱妇老熟女爽到高潮的片| 欧美激情一区二区三区蜜桃视频| 国产无遮挡aaa片爽爽| 欧美美女一区二区| 国产福利在线观看| 91av中文字幕| jizzjizzjizz欧美| 国产精品jizz在线观看老狼| 久久精品观看| 亚洲av无码一区二区三区观看 | 中文字幕精品久久| 美女91在线看| 成人动漫视频在线观看完整版| 欧美顶级大胆免费视频| 成人三级视频在线播放| 懂色av一区二区三区免费观看| www.com.av| 欧美日韩国产成人在线91| 国产视频精品久久| **欧美日韩vr在线| 国产亚洲成av人片在线观黄桃| a级片一区二区| 国产成人丝袜美腿| 手机在线免费看毛片| 欧美精品 国产精品| av在线免费观看网| 国产精品极品美女在线观看免费| 亚洲三级网址| 日韩免费高清在线| 久久久久久久久久久久久夜| 久久中文字幕免费| 日韩精品视频在线播放| 牛牛精品一区二区| 久久av免费观看| 亚洲欧美日本日韩| 成人免费无遮挡无码黄漫视频| 色哟哟国产精品| 国产精品久久久久一区二区国产| 国产成人精品一区二区三区| 国产成人调教视频在线观看 | 在线精品亚洲一区二区| 热久久免费视频| 性生交大片免费全黄| 欧美日韩激情一区二区| 日本a级在线| 波多野结衣精品久久| 精品白丝av| 国产国语性生话播放| 色综合av在线| 成人性爱视频在线观看| 国产日韩精品视频| 欧美日韩国产一区精品一区| 无码人妻一区二区三区免费n鬼沢| 夜夜嗨av一区二区三区四季av | 99久久国产综合精品色伊| 久久久久久久久久久久久av| 亚洲欧洲在线播放| 欧美一级免费| 狠狠精品干练久久久无码中文字幕| 粉嫩aⅴ一区二区三区四区五区| 精品国产免费观看| 亚洲一级一级97网| 在线不卡一区| 无码熟妇人妻av在线电影| 91麻豆精品一区二区三区| 中文字幕人妻一区二区三区视频| 久久综合网hezyo| 国产精品超碰| 国产理论在线播放| 一区二区在线免费| 噜噜噜噜噜在线视频| 成人女保姆的销魂服务| 91久久午夜| 人成免费在线视频| 欧美本精品男人aⅴ天堂| 周于希免费高清在线观看| 天天综合中文字幕| av影院午夜一区| 在线观看国产成人| 久久久久久免费精品| 精品一区二区三区在线| 特黄特黄一级片| 色综合欧美在线视频区| 亚洲资源一区| 日韩av电影免费播放| 国产精品一区二区久激情瑜伽| 特黄视频免费看| 欧美成人激情在线| 国内精品伊人久久久| 中文字幕无码毛片免费看| 91福利国产精品| 日本精品600av| 亚洲一卡二卡区| 2017欧美狠狠色|