您好,登錄后才能下訂單哦!
本篇內容介紹了“Springboot多數據源配置之怎么整合dynamic-datasource”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
技術:SpringBoot + Mybatis-Plus + Druid
SpringBoot里做多數據源配置,可以直接使用dynamic-datasource提供的服務,簡單便捷
<!--多數據源依賴--> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.3.1</version> </dependency>
autoconfigure: # 自動化配置 例外處理 exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: type: com.alibaba.druid.pool.DruidDataSource #多數據源配置 dynamic: #設置默認的數據源 primary: master datasource: # 數據庫1 master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/praticce_a?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: e0BhauLW2yhi2se9L+7QFaBsPMVgdPR1udDSqZe75Yh6Obp8YHyRw== druid: filters: stat,slf4j,wall,config initial-size: 10 max-active: 100 max-open-prepared-statements: 20 max-pool-prepared-statement-per-connection-size: 20 max-wait: 60000 min-evictable-idle-time-millis: 300000 min-idle: 10 pool-prepared-statements: true test-on-borrow: false test-on-return: false test-while-idle: true time-between-eviction-runs-millis: 60000 validation-query: select 'x' publicKey: MFwwDQYJKoZIhvcNAr7HWXiJQjmIZN6IYPMPzfRe20da5d8EAAQ== connection-properties: config.decrypt=true;config.decrypt.key=${spring.datasource.dynamic.datasource.master.druid.publicKey} # 數據庫2 slave1: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/pratice_b?useUnicode=true&characterEncoding=utf-8 username: root password: EVHrRAfXPl0Qpd6j4GsodQOwvsV9Q== druid: filters: stat,slf4j,wall,config initial-size: 10 max-active: 100 max-open-prepared-statements: 20 max-pool-prepared-statement-per-connection-size: 20 max-wait: 60000 min-evictable-idle-time-millis: 300000 min-idle: 10 pool-prepared-statements: true test-on-borrow: false test-on-return: false test-while-idle: true time-between-eviction-runs-millis: 60000 validation-query: select 'x' publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwQ== connection-properties: config.decrypt=true;config.decrypt.key=${spring.datasource.dynamic.datasource.msg.druid.publicKey}
說明:
數據庫配置這里使用了Druid的加密方式,如果數據庫連接密碼不需要加密,則password可以直接使用明文,druid配置中去掉config配置(filters中去掉config,connection-properties可以都去掉)
spring.datasource.dynamic.primary是用于設置默認的數據源,這個最好設置一個,因為我們不可能每個類或接口都指定數據源
spring.autoconfigure.exclude是去除Druid自動裝載數據庫配置,也可以直接在項目啟動類XXXApplication上加
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
@Mapper @DS("msg") public interface TestMapper { /** * 批量數據 * * @param poList 數據 */ void batchAdd(@Param("poList") List<TestDTO> poList); }
@DS優先級:方法 > 類
pagehelper: autoRuntimeDialect: true
在yml配置文件添加如上配置即可,注意必須是駝峰型,這個坑是真的坑
經過查看源碼發現,PageHelper的配置類不是使用普通的Bean,而是繼承Properties類。
斷點發現,代碼都沒有進入
public void setAutoRuntimeDialect(Boolean autoRuntimeDialect) { this.setProperty("autoRuntimeDialect", autoRuntimeDialect.toString()); }
導致這個參數配置的沒有生效。
搞得我還一直納悶是不是dynamic-datasource-spring-boot-starter的問題
“Springboot多數據源配置之怎么整合dynamic-datasource”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。