spring boot之事務使用

2021-08-27 21:28:11 字數 2692 閱讀 8572

spring boot的事務使用非常簡單,分為以下兩步

在入口類上新增註解@enabletransactionmanagement即可開啟事務

package com.bsqs.shop.order;

import org.springframework.cloud.client.discovery.enablediscoveryclient;

import org.springframework.cloud.netflix.feign.enablefeignclients;

import org.springframework.transaction.annotation.enabletransactionmanagement;

@enablediscoveryclient

@enablefeignclients

@enabletransactionmanagement

public static void main(string args)

}

使用事務,只需要在需要開啟事務支援的方法上使用註解@transactional 即可

如上兩步,spring boot的事務就使用完了

@transactional註解中常用引數說明

引數名稱

功能描述

readonly

該屬性用於設定當前事務是否為唯讀事務,設定為true表示唯讀,false則表示可讀寫,預設值為false。例如:@transactional(readonly=true)

rollbackfor

該屬性用於設定需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,則進行事務回滾。例如:

指定單一異常類:@transactional(rollbackfor=runtimeexception.class)

指定多個異常類:@transactional(rollbackfor=)

rollbackforclassname

該屬性用於設定需要進行回滾的異常類名稱陣列,當方法中丟擲指定異常名稱陣列中的異常時,則進行事務回滾。例如:

指定單一異常類名稱:@transactional(rollbackforclassname="runtimeexception")

指定多個異常類名稱:@transactional(rollbackforclassname=)

norollbackfor

該屬性用於設定不需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,不進行事務回滾。例如:

指定單一異常類:@transactional(norollbackfor=runtimeexception.class)

指定多個異常類:@transactional(norollbackfor=)

norollbackforclassname

該屬性用於設定不需要進行回滾的異常類名稱陣列,當方法中丟擲指定異常名稱陣列中的異常時,不進行事務回滾。例如:

指定單一異常類名稱:@transactional(norollbackforclassname="runtimeexception")

指定多個異常類名稱:

@transactional(norollbackforclassname=)

propagation

該屬性用於設定事務的傳播行為,具體取值可參考表6-7。

例如:@transactional(propagation=propagation.not_supported,readonly=true)

isolation

該屬性用於設定底層資料庫的事務隔離級別,事務隔離級別用於處理多事務併發的情況,通常使用資料庫的預設隔離級別即可,基本不需要進行設定

timeout

該屬性用於設定事務的超時秒數,預設值為-1表示永不超時

以上****於網路

1、@transactional 只能被應用到public方法上, 對於其它非public的方法,如果標記了@transactional也不會報錯,但方法沒有事務功能.

2、@transactional 中的rollbackfor屬性如果不指定,則預設指的是runtimeexception.class,也就是只有丟擲runtimeexception異常和其子異常時才會回滾,所以在使用時,如需丟擲其他異常需要指定

3、@transactional 指定的開啟異常的方法不能在當前類中被呼叫,否則事務不起作用(這個我找了很久才發現的,很坑)

4、spring團隊的建議是你在具體的類(或類的方法)上使用 @transactional 註解,而不要使用在類所要實現的任何介面上。你當然可以在介面上使用 @transactional 註解,但是這將只能當你設定了基於介面的**時它才生效。因為註解是不能繼承的,這就意味著如果你正在使用基於類的**時,那麼事務的設定將不能被基於類的**所識別,而且物件也將不會被事務**所包裝(將被確認為嚴重的)。因此,請接受spring團隊的建議並且在具體的類上使用 @transactional 註解。

springboot事務使用

1 事務傳播 propagation 例如 propagation.requered 屬性 required supports mandatory requires new not supported never nested 屬性 required 使用當前的事務,如果沒有事務,則自己新建乙個事務...

spring boot 事務使用究極指南

配置檔案的方式,即在spring xml檔案中進行統一配置,開發者基本上就不用關注事務的事情了,中無需關心任何和事務相關的 一切交給spring處理。註解的方式,只需在需要spring來幫忙管理事務的方法上加上 transaction註解就可以了,註解的方式相對來說更簡潔一些,都需要開發者自己去進行...

SpringBoot框架之事務詳解

事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是乙個不可分割的工作單位。是為解決資料安全操作提出的,事務控制實際上就是控制資料的安全訪問。spring事務處理詳解 這裡主要講宣告式註解 transactional。步驟如下所示 spring...