精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美在线播放| 国产亚洲高清一区| 国产欧美一区二区精品忘忧草| 国产精品美女在线| 久久嫩草捆绑紧缚| 91久久偷偷做嫩草影院电| 午夜精品在线看| 亚洲国产一区二区三区在线| 国产a级免费视频| 亚洲少妇一区| 久久亚洲国产精品| 久久精品成人av| 激情综合五月| 色婷婷综合久色| 免费观看亚洲视频| 成人高潮成人免费观看| 国产不卡一区视频| 国产精品久久99久久| 国产性70yerg老太| 日韩欧美一区二区三区在线视频| 亚洲成人亚洲激情| 日本中文字幕精品—区二区| 僵尸再翻生在线观看免费国语| 国产精品青草综合久久久久99| 国产福利久久精品| 国产精品久久影视| 日韩成人伦理电影在线观看| 欧美黑人xxx| 一级免费黄色录像| 香蕉久久夜色精品国产使用方法 | 久久久久国色av免费观看性色| 精品少妇人妻一区二区黑料社区| 亚洲2区在线| 欧美揉bbbbb揉bbbbb| 九九爱精品视频| 超碰在线网址| 国产精品久久久一本精品| 久久综合久久久| 黄色一级大片在线免费看国产| 精品一二三四在线| 国产精品久久久久7777婷婷| 国产精品视频免费播放| 伊人精品在线| 久久久久久久久综合| 欧美黑人猛猛猛| 欧美独立站高清久久| 亚洲网在线观看| 国产偷人妻精品一区| 国产精品主播在线观看| 日韩精品一区二区三区蜜臀| 亚洲第一成肉网| 狂野欧美性猛交xxxx| 欧美在线free| 男女视频在线看| 精精国产xxxx视频在线播放| 午夜影院在线观看欧美| 久操网在线观看| av伦理在线| 亚洲国产日韩一级| 国产www免费| 91精品国产黑色瑜伽裤| 亚洲成av人片www| 国产a级片网站| 91老司机福利在线| 精品国产鲁一鲁一区二区张丽 | 久久精品国产免费| 91精品久久久久久久久久入口| 成人av资源站| 欧美精品一二区| 国产av 一区二区三区| 欧美+亚洲+精品+三区| 欧美成人午夜激情在线| 免费日韩在线视频| 日韩亚洲在线| 国产成人一区二区三区| 国产精品露脸视频| 久久se精品一区精品二区| 成人黄色大片在线免费观看| www.色呦呦| 99久久久免费精品国产一区二区| 久久综合九色综合久99| xxxxx日韩| 亚洲少妇中出一区| 大西瓜av在线| 性感美女一区二区在线观看| 欧美乱妇20p| yjizz视频| 久久av导航| 精品国产一区二区三区四区在线观看| 麻豆明星ai换脸视频| 狠狠入ady亚洲精品经典电影| 97色在线观看免费视频| 精品视频一二三区| 国产剧情av麻豆香蕉精品| 精品视频第一区| av网站在线免费观看| 尤物在线观看一区| 爱福利视频一区二区| 四虎国产精品免费久久| 亚洲激情自拍图| 久久精品日韩无码| 亚洲欧洲一区| 成人a免费视频| 午夜国产在线观看| 中文字幕一区二区在线播放| 黄色一级片播放| 99久久99九九99九九九| 日韩电影中文字幕av| 2014亚洲天堂| 亚洲一区免费| 亚洲一区二区自拍| 国产在线一二三区| 一个色妞综合视频在线观看| 天天操天天爽天天射| 澳门精品久久国产| 日韩小视频在线| 国产成人无码av| 国产精品亚洲午夜一区二区三区 | 一区二区久久久| 国产精品少妇在线视频| 亚洲精品v亚洲精品v日韩精品| 国产香蕉97碰碰久久人人| 国产精品不卡av| 国产精品自拍三区| 亚洲精品久久区二区三区蜜桃臀| 欧美激情网站| 精品国产乱码久久久久久1区2区 | 欧美99久久| 国产精品久久一区主播| 天堂av在线播放| 亚洲综合色视频| 在线观看免费视频污| 成人aaaa| 日韩av123| 同心难改在线观看| 亚洲成人一区二区在线观看| 亚洲精品在线网址| 久久综合av| 国产精品亚洲一区二区三区| 黄色软件在线观看| 色综合久久88色综合天天免费| 日本一级片在线播放| 欧美福利电影在线观看| 91精品国产高清久久久久久91裸体 | 欧美日韩精品免费观看视完整| 亚洲第一中文字幕在线观看| 久久久久亚洲AV| 国产xxx精品视频大全| av不卡在线免费观看| 日本久久一区| 神马国产精品影院av| 在线免费看毛片| 国产精品久久久久影视| 精品日韩久久久| 久久神马影院| 成人免费看吃奶视频网站| 日本电影全部在线观看网站视频| 欧美日韩中字一区| 99自拍视频在线| 国产一区91精品张津瑜| 干日本少妇视频| 国产精品巨作av| 91av在线网站| 大乳在线免费观看| 欧美色涩在线第一页| 女人18毛片毛片毛片毛片区二| 黄色日韩网站视频| 日韩欧美一级在线| 精品国产午夜肉伦伦影院| 97视频在线观看亚洲| 欧美精品少妇| 欧美日韩不卡一区| 欧美日韩大片在线观看| 成人av免费观看| 日日碰狠狠躁久久躁婷婷| 精品欧美久久| 91在线精品视频| 擼擼色在线看观看免费| 国产亚洲综合久久| 国产精品一区二区人人爽| 亚洲一区在线观看网站| 在线观看日韩精品视频| 麻豆传媒一区二区三区| 免费的一级黄色片| 最新国产精品视频| 91精品国产综合久久久久久久久| 欧美韩日亚洲| 亚洲日本aⅴ片在线观看香蕉| 国产一区二区自拍视频| 亚洲国产日产av| 国产ts在线播放| 国产在线不卡一卡二卡三卡四卡| 奇米影视亚洲色图| 日本精品三区| 国产福利久久精品| 久久久久伊人| 久久久人成影片一区二区三区| 国产小视频免费在线观看| 91精品国产综合久久精品图片| 日韩av男人天堂| 国产精品成人网| 免费看毛片的网站| 麻豆精品视频在线| 日韩中文字幕在线视频观看| 99热国内精品永久免费观看| 你懂的网址一区二区三区| 国产亚洲高清一区| 国产精品福利网站| 欧美伦理免费在线| 一区二区亚洲精品国产| 神宫寺奈绪一区二区三区| 欧美精三区欧美精三区| 青青青国产在线| 亚洲另类在线视频| 亚洲精品国产精品国自| 91在线精品秘密一区二区| 国产5g成人5g天天爽| 日本亚洲免费观看| 波多野结衣家庭教师在线| 欧美日韩亚洲一区三区| 亚洲砖区区免费| 国产一区二区三区四区五区传媒| 丁香婷婷久久久综合精品国产 | 欧美午夜在线一二页| 91香蕉在线视频| 亚洲精品亚洲人成人网 | 天堂av在线7| 精品成人a区在线观看| 91麻豆国产视频| 在线观看日韩精品| 欧产日产国产69| 天天影视色香欲综合网老头| 久久久久久久久精| 亚洲视频图片小说| 亚洲AV成人无码网站天堂久久| 久久久精品天堂| 成人免费网站黄| 26uuu精品一区二区| 日韩aaaaa| 成人精品国产福利| 精品人妻在线视频| 丰满岳乱妇一区二区三区| 色偷偷中文字幕| 精品一区二区三区久久久| 久热精品在线观看视频| 美女视频一区在线观看| 日本特黄a级片| 久久激情五月婷婷| 中日韩av在线播放| 美国一区二区三区在线播放 | 国产成人精品三级| 天天干天天草天天| 久久精品国产99久久6 | 国产一区二区三区黄网站| 91精品国产自产在线观看永久| 日韩成人在线一区| 国产在线98福利播放视频| 小说区图片区亚洲| 成人a免费视频| 免费观看在线一区二区三区| 成人精品水蜜桃| 久久夜色精品国产噜噜av小说| 久久精品国产理论片免费| 国产不卡一区| 亚洲精品无人区| 在线观看免费一区二区| 成人小视频在线观看免费| 在线电影一区| 国产最新免费视频| 日本大胆欧美人术艺术动态| 成年人三级黄色片| 丰满放荡岳乱妇91ww| 欧美亚一区二区三区| 日本一区免费视频| 欧美人禽zoz0强交| 午夜成人免费电影| 青青国产在线视频| 666欧美在线视频| 人妻少妇精品无码专区| 亚洲欧美一区二区三区四区| 欧美一区二区三区| 高清一区二区三区日本久| 中文在线最新版地址| 国产精品亚洲视频在线观看| 777久久精品| 三区精品视频| 欧美日韩视频| 992kp快乐看片永久免费网址| 国产在线不卡一卡二卡三卡四卡| 国产 中文 字幕 日韩 在线| 国产精品日韩精品欧美在线| 国产精品二区一区二区aⅴ| 在线观看亚洲一区| 欧美 日韩 人妻 高清 中文| 揄拍成人国产精品视频| 日韩激情av| 国产精品欧美一区二区| 动漫av一区| 一区二区三区精品国产| 亚洲美女少妇无套啪啪呻吟| 一道本在线免费视频| 99久久婷婷国产综合精品| av在线免费播放网址| 精品成人av一区| 国产精品久久久久久久成人午夜| 精品视频一区在线视频| 污污片在线免费视频| 国产精品精品久久久| youjizz亚洲| 青青草免费在线视频观看| 久久精品人人| 国产 xxxx| 亚洲精品第1页| 在线观看国产小视频| 亚洲精品videossex少妇| 久久精品视频观看| 国产精品99久久久久久久久| 欧美黄色影院| 国产一区二区三区小说| 蓝色福利精品导航| 国产精品无码一区二区三区| 亚洲成av人综合在线观看| xxxx国产精品| xxx一区二区| 欧美激情不卡| 视频一区二区精品| 亚洲欧美日韩专区| bl动漫在线观看| 一区二区三区免费网站| 国产一区二区在线播放视频| 国产亚洲精品美女久久久久| 亚洲一二三四| 久久国产精品-国产精品| 亚洲承认在线| 无码人妻一区二区三区免费n鬼沢| 最新中文字幕一区二区三区| 最近中文字幕免费观看| 国产亚洲精品美女久久久久| 综合久久2023| 久久国产精品免费一区| 亚洲视频二区| 免费成人蒂法网站| 婷婷六月综合网| 手机看片一区二区| 91精品国产网站| 欧洲亚洲成人| 日韩av资源在线| 久久久夜色精品亚洲| 无码人妻丰满熟妇奶水区码| 亚洲欧洲在线看| 久久久人成影片一区二区三区在哪下载 | 青青草原综合久久大伊人精品 | 激情五月综合婷婷| 日本丰满少妇黄大片在线观看| 国内成人自拍视频| 婷婷久久综合网| 日韩你懂的电影在线观看| 久久久123| 久久国产日韩欧美| 久久久国产亚洲精品| 超碰97av在线| 91麻豆精品国产91| 日本成人不卡| 免费精品视频一区二区三区| 天堂精品中文字幕在线| 9.1片黄在线观看| 欧美一区日本一区韩国一区| 美女日批视频在线观看| 国模精品一区二区三区| 美女精品在线| 99热6这里只有精品| 日韩免费视频一区二区| 国产一二三在线| 日韩欧美精品在线不卡 | 年下总裁被打光屁股sp | 欧美国产日韩a欧美在线观看| 中文字幕欧美人妻精品一区蜜臀| 久久精品国产久精国产思思| 亚洲国产中文在线| 妞干网在线免费视频| 亚洲三级电影网站| 天堂av手机版| 国产精品看片资源| 欧美日一区二区三区在线观看国产免| 午夜免费福利影院| 在线视频国内自拍亚洲视频| 国产激情视频在线| 精品一区在线播放| 美女脱光内衣内裤视频久久影院| 国产一卡二卡在线播放| 亚洲人午夜精品免费| 五月亚洲婷婷| 少妇黄色一级片| 亚洲成人免费看| 婷婷在线视频| 久久一区二区三区欧美亚洲| 精品无人区卡一卡二卡三乱码免费卡| 国产精品第二十页| 北条麻妃在线一区二区| 亚州综合一区|