springboot的yml配置文件通過(guò)db2的方式整合mysql的教程
springboot整合MySQL很簡(jiǎn)單,多數(shù)據(jù)源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一個(gè)yml文件先配置MySQL,代碼如下
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: # 主庫(kù)數(shù)據(jù)源 master: url: jdbc:mysql://localhost:3308/<數(shù)據(jù)庫(kù)名>?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # 從庫(kù)數(shù)據(jù)源 slave: # 從數(shù)據(jù)源開(kāi)關(guān)/默認(rèn)關(guān)閉 enabled: true url: jdbc:mysql://localhost:3308/<數(shù)據(jù)庫(kù)名>?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # 初始連接數(shù) initialSize: 5 # 最小連接池?cái)?shù)量 minIdle: 10 # 最大連接池?cái)?shù)量 maxActive: 20 # 配置獲取連接等待超時(shí)的時(shí)間 maxWait: 60000 # 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一個(gè)連接在池中最大生存的時(shí)間,單位是毫秒 maxEvictableIdleTimeMillis: 900000 # 配置檢測(cè)連接是否有效 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false webStatFilter: enabled: true statViewServlet: enabled: true # 設(shè)置白名單,不填則允許所有訪(fǎng)問(wèn) allow: url-pattern: /druid/* # 控制臺(tái)管理用戶(hù)名和密碼 login-username: login-password: filter: stat: enabled: true # 慢SQL記錄 log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true
接下來(lái)配置DB2
second: spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.ibm.db2.jcc.DB2Driver url: jdbc:db2://<DB2的IP>:<端口>/<數(shù)據(jù)庫(kù)名>:currentSchema=<所要連接的schema名>; username: <用戶(hù)名> password: <密碼> # 初始連接數(shù) initialSize: 5 # 最小連接池?cái)?shù)量 minIdle: 10 # 最大連接池?cái)?shù)量 maxActive: 20 # 配置獲取連接等待超時(shí)的時(shí)間 maxWait: 60000 # 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一個(gè)連接在池中最大生存的時(shí)間,單位是毫秒 maxEvictableIdleTimeMillis: 900000 # 配置檢測(cè)連接是否有效 注意這里DUAL是檢測(cè)的表名,可以是當(dāng)前schema下的任意一張表 validationQuery: SELECT 1 FROM **<檢測(cè)表名>** testWhileIdle: true testOnBorrow: false testOnReturn: false webStatFilter: enabled: true statViewServlet: enabled: true # 設(shè)置白名單,不填則允許所有訪(fǎng)問(wèn) allow: url-pattern: /druid/* # 控制臺(tái)管理用戶(hù)名和密碼 login-username: login-password: filter: stat: enabled: true # 慢SQL記錄 log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true
OK這樣就能通過(guò)Config獲取到了,下面是Config源碼
package com.map.framework.config;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;import com.alibaba.druid.util.Utils;import com.map.common.enums.DataSourceType;import com.map.common.utils.spring.SpringUtils;import com.map.framework.config.properties.DruidProperties;import com.map.framework.datasource.DynamicDataSource;import org.springframework.jdbc.datasource.DataSourceTransactionManager;/** * druid 配置多數(shù)據(jù)源 * * */@Configurationpublic class DruidConfig{ @Bean @ConfigurationProperties('spring.datasource.druid.master') public DataSource masterDataSource(DruidProperties druidProperties) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); return druidProperties.dataSource(dataSource); } @Bean @ConfigurationProperties('spring.datasource.druid.slave') @ConditionalOnProperty(prefix = 'spring.datasource.druid.slave', name = 'enabled', havingValue = 'true') public DataSource slaveDataSource(DruidProperties druidProperties) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); return druidProperties.dataSource(dataSource); } @Bean @ConfigurationProperties('second.spring.datasource') public DataSource db2DataSource(DruidProperties druidProperties) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); return druidProperties.dataSource(dataSource); } @Bean(name = 'dynamicDataSource') @Primary public DynamicDataSource dataSource(DataSource masterDataSource) { Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource); setDataSource(targetDataSources, DataSourceType.SLAVE.name(), 'slaveDataSource'); setDataSource(targetDataSources, DataSourceType.DB2.name(), 'db2DataSource'); return new DynamicDataSource(masterDataSource, targetDataSources); } /** * 設(shè)置數(shù)據(jù)源 * * @param targetDataSources 備選數(shù)據(jù)源集合 * @param sourceName 數(shù)據(jù)源名稱(chēng) * @param beanName bean名稱(chēng) */ public void setDataSource(Map<Object, Object> targetDataSources, String sourceName, String beanName) { try { DataSource dataSource = SpringUtils.getBean(beanName); targetDataSources.put(sourceName, dataSource); } catch (Exception e) { } }}
這就是我整合MySQL和DB2時(shí)遇到的問(wèn)題,記錄一下
總結(jié)
到此這篇關(guān)于springboot的yml配置文件通過(guò)db2的方式整合mysql的教程的文章就介紹到這了,更多相關(guān)springboot yml配置文件整合mysql內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. idea重置默認(rèn)配置的方法步驟2. IntelliJ IDEA安裝插件的方法步驟3. Docker 部署 Prometheus的安裝詳細(xì)教程4. 通過(guò)Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡(jiǎn)易接口測(cè)試平臺(tái)5. IntelliJ IDEA設(shè)置自動(dòng)提示功能快捷鍵的方法6. IntelliJ IDEA設(shè)置背景圖片的方法步驟7. idea設(shè)置代碼格式化的方法步驟8. idea給項(xiàng)目打war包的方法步驟9. idea打開(kāi)多個(gè)窗口的操作方法10. IntelliJ IDEA調(diào)整字體大小的方法

網(wǎng)公網(wǎng)安備