av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

Spring Boot事務配置操作

瀏覽:15日期:2023-08-13 17:47:33

1、在啟動主類添加注解:@EnableTransactionManagement 來啟用注解式事務管理,相當于之前在xml中配置的<tx:annotation-driven />注解驅動。

2、在需要事務的類或者方法上面添加@Transactional() 注解,里面可以配置需要的粒度:

Spring Boot事務配置操作

這么多東西提供配置:

Isolation :隔離級別

隔離級別是指若干個并發的事務之間的隔離程度,與我們開發時候主要相關的場景包括:臟讀取、重復讀、幻讀。

我們可以看 org.springframework.transaction.annotation.Isolation 枚舉類中定義了五個表示隔離級別的值:

public enum Isolation { DEFAULT(-1), READ_UNCOMMITTED(1), READ_COMMITTED(2), REPEATABLE_READ(4), SERIALIZABLE(8);}

DEFAULT :這是默認值,表示使用底層數據庫的默認隔離級別。對大部分數據庫而言,通常這值就是: READ_COMMITTED 。

READ_UNCOMMITTED :該隔離級別表示一個事務可以讀取另一個事務修改但還沒有提交的數據。該級別不能防止臟讀和不可重復讀,因此很少使用該隔離級別。

READ_COMMITTED :該隔離級別表示一個事務只能讀取另一個事務已經提交的數據。該級別可以防止臟讀,這也是大多數情況下的推薦值。

REPEATABLE_READ :該隔離級別表示一個事務在整個過程中可以多次重復執行某個查詢,并且每次返回的記錄都相同。即使在多次查詢之間有新增的數據滿足該查詢,這些新增的記錄也會被忽略。該級別可以防止臟讀和不可重復讀。

SERIALIZABLE :所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就是說,該級別可以防止臟讀、不可重復讀以及幻讀。但是這將嚴重影響程序的性能。通常情況下也不會用到該級別。

指定方法:通過使用 isolation 屬性設置,例如:@Transactional(isolation = Isolation.DEFAULT)

Propagation:傳播行為

所謂事務的傳播行為是指,如果在開始當前事務之前,一個事務上下文已經存在,此時有若干選項可以指定一個事務性方法的執行行為。

我們可以看 org.springframework.transaction.annotation.Propagation 枚舉類中定義了6個表示傳播行為的枚舉值:

public enum Propagation { REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED(4), NEVER(5), NESTED(6);}

REQUIRED :如果當前存在事務,則加入該事務;如果當前沒有事務,則創建一個新的事務。

SUPPORTS :如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續運行。

MANDATORY :如果當前存在事務,則加入該事務;如果當前沒有事務,則拋出異常。

REQUIRES_NEW :創建一個新的事務,如果當前存在事務,則把當前事務掛起。

NOT_SUPPORTED :以非事務方式運行,如果當前存在事務,則把當前事務掛起。

NEVER :以非事務方式運行,如果當前存在事務,則拋出異常。

NESTED :如果當前存在事務,則創建一個事務作為當前事務的嵌套事務來運行;如果當前沒有事務,則該取值等價于 REQUIRED 。

指定方法:通過使用 propagation 屬性設置,例如:@Transactional(propagation = Propagation.REQUIRED)

補充知識:SpringBoot配置全局事務(復制就能用)

廢話不多說,看代碼吧~

@Aspect@Configurationpublic class TransactionAdviceConfig { private static final String AOP_POINTCUT_EXPRESSION = 'execution (* com.***.service.*.*(..))'; @Autowired private PlatformTransactionManager transactionManager; @Bean public TransactionInterceptor txAdvice() { DefaultTransactionAttribute txAttr_REQUIRED = new DefaultTransactionAttribute(); txAttr_REQUIRED.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); DefaultTransactionAttribute txAttr_REQUIRED_READONLY = new DefaultTransactionAttribute(); txAttr_REQUIRED_READONLY.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); txAttr_REQUIRED_READONLY.setReadOnly(true); NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource(); source.addTransactionalMethod('add*', txAttr_REQUIRED); source.addTransactionalMethod('save*', txAttr_REQUIRED); source.addTransactionalMethod('delete*', txAttr_REQUIRED); source.addTransactionalMethod('update*', txAttr_REQUIRED); source.addTransactionalMethod('exec*', txAttr_REQUIRED); source.addTransactionalMethod('set*', txAttr_REQUIRED); source.addTransactionalMethod('get*', txAttr_REQUIRED_READONLY); source.addTransactionalMethod('query*', txAttr_REQUIRED_READONLY); source.addTransactionalMethod('find*', txAttr_REQUIRED_READONLY); source.addTransactionalMethod('list*', txAttr_REQUIRED_READONLY); source.addTransactionalMethod('count*', txAttr_REQUIRED_READONLY); source.addTransactionalMethod('is*', txAttr_REQUIRED_READONLY); return new TransactionInterceptor(transactionManager, source); } @Bean public Advisor txAdviceAdvisor() { AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); pointcut.setExpression(AOP_POINTCUT_EXPRESSION); return new DefaultPointcutAdvisor(pointcut, txAdvice()); }}

以上這篇Spring Boot事務配置操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 91欧美 | 欧美激情精品久久久久久变态 | 亚州av| 欧美一区二区免费视频 | 久久精品久久久久久 | 亚洲精品福利在线 | 欧美影院| 欧美日韩综合一区 | 少妇一级淫片免费放播放 | 日本天天操| 91久久国产精品 | 91在线精品视频 | 岛国av免费在线观看 | 日日干夜夜干 | 在线日韩欧美 | 日韩有码在线观看 | 男女羞羞视频在线观看 | 久久精品国产99国产精品 | 久久毛片| 有码一区| 成人黄色三级毛片 | 一级片在线观看视频 | 精品一区二区三区四区五区 | 久久一热 | 爱高潮www亚洲精品 中文字幕免费视频 | a在线观看 | 精品欧美激情精品一区 | 国产免费观看视频 | 青青草精品视频 | 日韩成人在线播放 | 99精品一区二区三区 | 99久久精品一区二区毛片吞精 | 国产精品久久久久久久久久久久冷 | 久久久久久综合 | 久热爱 | 午夜av电影 | 日韩在线精品视频 | 日本欧美国产在线 | 欧美成视频 | 欧美成人h版在线观看 | 欧美啪啪|