久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

Spring Boot事務配置操作

瀏覽:12日期: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
相關文章:
主站蜘蛛池模板: 日韩在线观看精品 | 国产精品久久久久久久午夜片 | 日韩毛片在线观看 | 国产精品毛片无码 | 99久久综合精品五月天 | 精品久久久久一区二区国产 | 免费一区二区三区 | 成人在线免费 | 久热官网 | 亚洲国产成人av好男人在线观看 | www视频在线观看 | 国产一级毛片电影 | 国产人成精品一区二区三 | 国产亚洲精品综合一区91555 | 成人三级av | 精品欧美视频 | 玖玖国产精品视频 | 欧美 日韩 国产 成人 在线 | 综合色久 | 91在线视频免费播放 | 亚洲人成人一区二区在线观看 | 精品一区二区三区在线观看视频 | www.99热这里只有精品 | 国产精品久久久爽爽爽麻豆色哟哟 | 一区二区在线免费观看 | 色站综合| 在线播放91 | 久久伊人免费视频 | 久久久久久久久99精品 | 欧美自拍视频在线 | 国产女人爽到高潮免费视频 | 免费的av网站 | 精品国产鲁一鲁一区二区在线观看 | 日韩精品一二三区 | 日韩中文字幕 | 男女免费视频 | 欧美成人一区二区三区片免费 | 久久情趣视频 | 在线欧美一区 | 国产精品久久久久久久久久久新郎 | 日韩欧美视频一区二区三区 |