国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解SpringBoot的事務(wù)管理

詳解SpringBoot的事務(wù)管理

2020-09-08 13:57Java教程網(wǎng) Java教程

Springboot內(nèi)部提供的事務(wù)管理器是根據(jù)autoconfigure來進(jìn)行決定的。接下來通過本文給大家介紹SpringBoot的事務(wù)管理相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧

Springboot內(nèi)部提供的事務(wù)管理器是根據(jù)autoconfigure來進(jìn)行決定的。

比如當(dāng)使用jpa的時候,也就是pom中加入了spring-boot-starter-data-jpa這個starter之后。

Springboot會構(gòu)造一個JpaTransactionManager這個事務(wù)管理器。

而當(dāng)我們使用spring-boot-starter-jdbc的時候,構(gòu)造的事務(wù)管理器則是DataSourceTransactionManager。

這2個事務(wù)管理器都實現(xiàn)了spring中提供的PlatformTransactionManager接口,這個接口是spring的事務(wù)核心接口。

這個核心接口有以下這幾個常用的實現(xiàn)策略:

?
1
2
3
4
HibernateTransactionManager
DataSourceTransactionManager
JtaTransactionManager
JpaTransactionManager

具體的PlatformTransactionManager繼承關(guān)系如下:

詳解SpringBoot的事務(wù)管理

spring-boot-starter-data-jpa這個starter會觸發(fā)HibernateJpaAutoConfiguration這個自動化配置類,HibernateJpaAutoConfiguration繼承了JpaBaseConfiguration基礎(chǔ)類。

在JpaBaseConfiguration中構(gòu)造了事務(wù)管理器:

?
1
2
3
4
5
@Bean
@ConditionalOnMissingBean(PlatformTransactionManager.class)
public PlatformTransactionManager transactionManager() {
return new JpaTransactionManager();
}

spring-boot-starter-jdbc會觸發(fā)DataSourceTransactionManagerAutoConfiguration這個自動化配置類,也會構(gòu)造事務(wù)管理器:

?
1
2
3
4
5
6
@Bean
@ConditionalOnMissingBean(PlatformTransactionManager.class)
@ConditionalOnBean(DataSource.class)
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(this.dataSource);
}

Spring的事務(wù)管理器PlatformTransactionManager接口中定義了3個方法:

?
1
2
3
4
5
6
// 基于事務(wù)的傳播特性,返回一個已經(jīng)存在的事務(wù)或者創(chuàng)建一個新的事務(wù)
TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
// 提交事務(wù)
void commit(TransactionStatus status) throws TransactionException;
// 回滾事務(wù)
void rollback(TransactionStatus status) throws TransactionException;

其中TransactionDefinition接口表示跟spring兼容的事務(wù)屬性,比如傳播行為、隔離級別、超時時間、是否只讀等屬性。

DefaultTransactionDefinition類是一個默認(rèn)的TransactionDefinition實現(xiàn),它的傳播行為是PROPAGATION_REQUIRED(如果當(dāng)前沒事務(wù),則創(chuàng)建一個,否則加入到當(dāng)前事務(wù)中),隔離級別是數(shù)據(jù)庫默認(rèn)級別。

TransactionStatus接口表示事務(wù)的狀態(tài),比如事務(wù)是否是一個剛構(gòu)造的事務(wù)、事務(wù)是否已經(jīng)完成等狀態(tài)。

下面這段代碼就是傳統(tǒng)事務(wù)的常見寫法:

?
1
2
3
4
5
6
7
8
9
transaction.begin();
try {
...
transaction.commit();
} catch(Exception e) {
...
transaction.rollback();
} finally {
}

由于spring的事務(wù)操作被封裝到了PlatformTransactionManager接口中,commit和rollback方法對應(yīng)接口中的方法,begin方法在getTransaction方法中會被調(diào)用。

細(xì)心的讀者發(fā)現(xiàn)文章前面構(gòu)造事務(wù)管理器的時候都會加上這段注解:

?
1
@ConditionalOnMissingBean(PlatformTransactionManager.class)

也就是說如果我們手動配置了事務(wù)管理器,Springboot就不會再為我們自動配置事務(wù)管理器。

如果要使用多個事務(wù)管理器的話,那么需要手動配置多個:

?
1
2
3
4
5
6
7
8
9
10
11
@Configuration
public class DatabaseConfiguration {
@Bean
public PlatformTransactionManager transactionManager1(EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
@Bean
public PlatformTransactionManager transactionManager2(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}

然后使用Transactional注解的時候需要聲明是哪個事務(wù)管理器:

?
1
2
3
4
@Transactional(value="transactionManager1")
public void save() {
doSave();
}

Spring給我們提供了一個TransactionManagementConfigurer接口,該接口只有一個方法返回PlatformTransactionManager。其中返回的PlatformTransactionManager就表示這是默認(rèn)的事務(wù)處理器,這樣在Transactional注解上就不需要聲明是使用哪個事務(wù)管理器了。

參考閱讀:

Spring Boot 快速入門指南

Spring Boot 快速入門教程

以上所述是小編給大家介紹的SpringBoot的事務(wù)管理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 性色av一区二区三区红粉影视 | 久久久久久久久久久影视 | 成人av在线播放 | 国产一区二区三区视频 | 亚洲一区二区三区精品动漫 | 日韩免费一区二区 | 色综合久久久 | www.91看片| 日韩精品一区二区在线视频 | 91久久精品一区二区二区 | 午夜看片| 中文字幕一区二区av | 在线欧美日韩 | 国产露脸国语对白在线 | 欧美一级毛片日韩一级 | 毛片在线免费 | 久久久久国产一区二区三区 | 久久免费99精品久久久久久 | 一区二区免费在线播放 | 在线亚洲免费 | 日韩精品1区 | 精品久久久久久久人人人人传媒 | 看毛片网站 | 亚洲精品免费在线视频 | 欧美区日韩区 | 在线中文字幕第一页 | 色成人亚洲www78ixcom | 日韩二区| 免费污视频在线 | 欧美激情在线观看 | 91精品国产综合久久久久久漫画 | 亚洲综合日韩欧美 | 黄色在线免费 | 亚洲成人在线播放视频 | 最新国产在线视频 | 久久99这里只有精品 | 亚洲精品网址 | 少妇精品久久久久久久久久 | 精品一区二区三区免费视频 | 高清av电影 | 中文字幕亚洲国产 |