Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置

Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置

[TOC]

準(zhǔn)備工作

先給我們的項(xiàng)目添加Spring-JDBC依賴和需要訪問數(shù)據(jù)庫(kù)的驅(qū)動(dòng)依賴化漆。

配置文件

spring.datasource.prod.driverClassName=com.mysql.jdbc.Driver
spring.datasource.prod.url=jdbc:mysql://127.0.0.1:3306/prod
spring.datasource.prod.username=root
spring.datasource.prod.password=123456
 
spring.datasource.dev.driverClassName=com.mysql.jdbc.Driver
spring.datasource.dev.url=jdbc:mysql://127.0.0.1:3306/dev
spring.datasource.dev.username=root
spring.datasource.dev.password=123456

JavaConfig

首先建立Java配置類洋侨,為其添加上注解@Configuration让网。

@Configuration
public class JdbcConfig {
 
}

配置數(shù)據(jù)源

  • 給其中一個(gè)數(shù)據(jù)源加上@Primary凹蜂。因?yàn)樵赟pring Boot Jdbc的自動(dòng)配置過程中瘟芝,會(huì)對(duì)于開發(fā)者透明地使用dataSource進(jìn)行一些相關(guān)配置俱笛,所以當(dāng)有兩個(gè)Datasource實(shí)現(xiàn)類時(shí),Spring Boot將無法確定使用哪一個(gè)妆够。
  • 當(dāng)我們不為@Bean指定名字時(shí)识啦,Spring會(huì)默認(rèn)使用方法名作為Bean的名字,所以下面兩個(gè)數(shù)據(jù)源的名字分別為prodDataSourcedevDataSource神妹。
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource.prod")
public DataSource prodDataSource(){
    return DataSourceBuilder.create().build();
}
 
@Bean
@ConfigurationProperties(prefix = "spring.datasource.dev")
public DataSource devDataSource(){
    return DataSourceBuilder.create().build();
}

配置文件里的屬性名是不需要寫成spring.datasource.xxx的形式的颓哮,寫成a.b.c.url也沒有問題,只要在配置bean時(shí)指定前綴為a.b.c

配置JdbcTemplate

  • 在此我們返回的不是JdbcTemplate的實(shí)現(xiàn)鸵荠,而是其實(shí)現(xiàn)接口JdbcOperations冕茅。
  • 使用@Qualifier注解指定該注入哪個(gè)bean,默認(rèn)名字為定義該bean的方法名。
@Bean
public JdbcOperations prodJdbcOperations(@Qualifier("prodDataSource") DataSource prodDataSource) {
    return new JdbcTemplate(prodDataSource);
}
 
@Bean
public JdbcOperations devJdbcOperations(@Qualifier("devDataSource") DataSource devDataSource) {
    return new JdbcTemplate(devDataSource);
}

使用

  • 直接注入JdbcOperations即可
    @Autowired
    private JdbcOperations devJdbcOperations;
 
    @Autowired
    private JdbcOperations prodJdbcOperations;

事務(wù)配置

開啟事務(wù)管理功能

在項(xiàng)目入口類姨伤,添加以下注解開啟事務(wù)管理功能哨坪。

@EnableTransactionManagement

配置事務(wù)管理器

@Bean
public PlatformTransactionManager prodTransactionManager(@Qualifier("prodDataSource") DataSource prodDataSource) {
    return new DataSourceTransactionManager(prodDataSource);
}
 
@Bean
public PlatformTransactionManager devTransactionManager(@Qualifier("devDataSource") DataSource sitDataSource) {
    return new DataSourceTransactionManager(sitDataSource);
}

使用

使用時(shí)只需在需要事務(wù)的方法添加注解@Transactional,并指定其value值即可姜挺。同樣的齿税,value值與相應(yīng)的方法名相匹配即可。

@Transactional(value = "prodTransactionManager")
public void prod() {
    prodJdbcOperations.queryForList("SELECT * FROM USER");
}
 
@Transactional(value = "devTransactionManager")
public void dev() {
    devJdbcOperations.queryForList("SELECT * FROM USER");
}

注意炊豪,@Transactional配置事務(wù)有很多限制凌箕,如方法必須為public,同一個(gè)類中無該注解的方法調(diào)用有注解的方法事務(wù)不生效等词渤。該注解還可以配置在接口類等地方牵舱,具體用法請(qǐng)參考Spring官方文檔相應(yīng)章節(jié) http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缺虐,隨后出現(xiàn)的幾起案子芜壁,更是在濱河造成了極大的恐慌,老刑警劉巖高氮,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慧妄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剪芍,警方通過查閱死者的電腦和手機(jī)塞淹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罪裹,“玉大人饱普,你說我怎么就攤上這事∽垂玻” “怎么了套耕?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)峡继。 經(jīng)常有香客問我冯袍,道長(zhǎng),這世上最難降的妖魔是什么碾牌? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任颠猴,我火速辦了婚禮,結(jié)果婚禮上小染,老公的妹妹穿的比我還像新娘。我一直安慰自己贮折,他們只是感情好裤翩,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般踊赠。 火紅的嫁衣襯著肌膚如雪呵扛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天筐带,我揣著相機(jī)與錄音今穿,去河邊找鬼。 笑死伦籍,一個(gè)胖子當(dāng)著我的面吹牛蓝晒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帖鸦,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼芝薇,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了作儿?” 一聲冷哼從身側(cè)響起洛二,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攻锰,沒想到半個(gè)月后晾嘶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娶吞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年垒迂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寝志。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娇斑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出材部,到底是詐尸還是另有隱情毫缆,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布乐导,位于F島的核電站苦丁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏物臂。R本人自食惡果不足惜旺拉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棵磷。 院中可真熱鬧蛾狗,春花似錦、人聲如沸仪媒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至留凭,卻和暖如春佃扼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔼夜。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工兼耀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人求冷。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓瘤运,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親遵倦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尽超,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)梧躺,斷路器似谁,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 這部分的參考文檔涉及數(shù)據(jù)訪問和數(shù)據(jù)訪問層和業(yè)務(wù)或服務(wù)層之間的交互。 Spring的綜合事務(wù)管理支持覆蓋很多細(xì)節(jié)掠哥,然...
    竹天亮閱讀 1,029評(píng)論 0 0
  • 摘要 看完本文你將掌握如下知識(shí)點(diǎn): Spring Boot對(duì)JDBC的支持 Spring Boot項(xiàng)目多數(shù)據(jù)源的配...
    飄逸峰閱讀 2,430評(píng)論 0 12
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,648評(píng)論 0 3