您好,登錄后才能下訂單哦!
這篇文章主要講解了“動態(tài)數(shù)據(jù)源dynamic-datasource-spring-boot-starter怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“動態(tài)數(shù)據(jù)源dynamic-datasource-spring-boot-starter怎么使用”吧!
dynamic-datasource-spring-boot-starter是一個基于springboot的快速集成多數(shù)據(jù)源的啟動器。
其支持Jdk 1.7+, SpringBoot 1.5.x 和 2.x.x。
支持?jǐn)?shù)據(jù)源分組,適用于多種場景 純粹多庫 讀寫分離 一主多從 混合模式。
支持?jǐn)?shù)據(jù)庫敏感配置信息加密ENC()。
支持每個數(shù)據(jù)庫獨(dú)立初始化表結(jié)構(gòu)schema和數(shù)據(jù)庫database。
支持自定義注解,需繼承DS(3.2.0+)。
提供對Druid,Mybatis-Plus,P6sy,Jndi的快速集成。
簡化Druid和HikariCp配置,提供全局參數(shù)配置。配置一次,全局通用。
提供自定義數(shù)據(jù)源來源方案。
提供項目啟動后動態(tài)增加移除數(shù)據(jù)源方案。
提供Mybatis環(huán)境下的純讀寫分離方案。
提供使用spel動態(tài)參數(shù)解析數(shù)據(jù)源方案。內(nèi)置spel,session,header,支持自定義。
支持多層數(shù)據(jù)源嵌套切換。(ServiceA >>> ServiceB >>> ServiceC)。
提供對shiro,sharding-jdbc,quartz等第三方庫集成的方案,注意事項和示例。
提供**基于seata的分布式事務(wù)方案。**附:不支持原生spring事務(wù)。
提供**本地多數(shù)據(jù)源事務(wù)方案。**附:不支持原生spring事務(wù)。
本框架只做切換數(shù)據(jù)源這件核心的事情。
配置文件所有以下劃線_分割的數(shù)據(jù)源首部即為組的名稱,相同組名稱的數(shù)據(jù)源會放在一個組下。
切換數(shù)據(jù)源可以是組名,也可以是具體數(shù)據(jù)源名稱。組名則切換時采用負(fù)載均衡算法切換。
默認(rèn)的數(shù)據(jù)源名稱為master,你可以通過spring.datasource.dynamic.primary修改。
方法上的注解優(yōu)先于類上注解。
引入dynamic-datasource-spring-boot-starter。
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${version}</version> </dependency>
配置數(shù)據(jù)源。
spring: datasource: dynamic: primary: master #設(shè)置默認(rèn)的數(shù)據(jù)源或者數(shù)據(jù)源組,默認(rèn)值即為master strict: false #設(shè)置嚴(yán)格模式,默認(rèn)false不啟動. 啟動后在未匹配到指定數(shù)據(jù)源時候會拋出異常,不啟動則使用默認(rèn)數(shù)據(jù)源. datasource: master: url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置 slave_1: url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave_2: url: ENC(xxxxx) # 內(nèi)置加密,使用請查看詳細(xì)文檔 username: ENC(xxxxx) password: ENC(xxxxx) driver-class-name: com.mysql.jdbc.Driver schema: db/schema.sql # 配置則生效,自動初始化表結(jié)構(gòu) data: db/data.sql # 配置則生效,自動初始化數(shù)據(jù) continue-on-error: true # 默認(rèn)true,初始化失敗是否繼續(xù) separator: ";" # sql默認(rèn)分號分隔符 #......省略 #以上會配置一個默認(rèn)庫master,一個組slave下有兩個子庫slave_1,slave_2
# 多主多從 純粹多庫(記得設(shè)置primary) 混合配置 spring: spring: spring: datasource: datasource: datasource: dynamic: dynamic: dynamic: datasource: datasource: datasource: master_1: mysql: master: master_2: oracle: slave_1: slave_1: sqlserver: slave_2: slave_2: postgresql: oracle_1: slave_3: h3: oracle_2:
使用**@DS**切換數(shù)據(jù)源。
@DS可以注解在方法上或類上,同時存在就近原則 方法上注解 優(yōu)先于 類上注解。
注解 | 結(jié)果 |
---|---|
沒有@DS | 默認(rèn)數(shù)據(jù)源 |
@DS("dsName") | dsName可以為組名也可以為具體某個庫的名稱 |
@Service @DS("slave") public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; public List selectAll() { return jdbcTemplate.queryForList("select * from user"); } @Override @DS("slave_1") public List selectByCondition() { return jdbcTemplate.queryForList("select * from user where age >10"); } }
感謝各位的閱讀,以上就是“動態(tài)數(shù)據(jù)源dynamic-datasource-spring-boot-starter怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對動態(tài)數(shù)據(jù)源dynamic-datasource-spring-boot-starter怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。