補充6 SpringBoot事務實現

2021-10-24 03:54:12 字數 816 閱讀 8531

這裡小結下spring 中事務的實現思路,spring 主要依靠 transactioninterceptor 來攔截執行方法體,判斷是否開啟事務,然後執行事務方法體,方法體中catch住異常,接著判斷是否需要回滾,如果需要回滾就委託真正的transactionmanager 比如jdbc中的datasourcetransactionmanager來執行回滾邏輯。提交事務也是同樣的道理。

spring中定義了七種事務傳播行為:型別

說明 propagation_required

如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇

propagation_supports

支援當前事務,如果當前沒有事務,就以非事務方式執行。

propagation_mandatory

使用當前的事務,如果當前沒有事務,就丟擲異常。

propagation_requires_new

新建事務,如果當前存在事務,把當前事務掛起。

propagation_not_supported

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

propagation_never

以非事務方式執行,如果當前存在事務,則丟擲異常。

propagation_nested

如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。

總結:非事務的方式執行,其實就是設定為自動提交了,如果乙個方法中有多個操作,則每個操作都會在不同事務中完成,不會保證他們的原子性。

spring 事務管理機制概述

筆記 Spring Boot 補充

public class restcontroller public class hellocontroller zwt.port 123456 1.environment 可以通過 environment 的 getproperty 方法來獲取想要的配置資訊import org.springfra...

事務補充(8)

mvcc 在mysql裡,有兩個 檢視 個概念 乙個是view,它是乙個用查詢語句定義的虛擬表,在呼叫的時候執行查詢語句並生成結果。另乙個是innodb在實現mvcc時用到的一致性讀檢視,即consistent read view,用於支援rc read committed,讀提交 和rr repe...

springboot事務操作

事務 transaction 一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 在計算機術語中,事務通常就是指資料庫事務。並非任意的對資料庫的操作序列都是資料庫事務。事務應該具有4個屬性 原子性 一致性 隔離性 永續性。這四個屬性通常稱為ac...