您好,登錄后才能下訂單哦!
springboot整合MySQL很簡單,多數據源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一個yml文件
先配置MySQL,代碼如下
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: # 主庫數據源 master: url: jdbc:mysql://localhost:3308/<數據庫名>?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # 從庫數據源 slave: # 從數據源開關/默認關閉 enabled: true url: jdbc:mysql://localhost:3308/<數據庫名>?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # 初始連接數 initialSize: 5 # 最小連接池數量 minIdle: 10 # 最大連接池數量 maxActive: 20 # 配置獲取連接等待超時的時間 maxWait: 60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一個連接在池中最大生存的時間,單位是毫秒 maxEvictableIdleTimeMillis: 900000 # 配置檢測連接是否有效 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false webStatFilter: enabled: true statViewServlet: enabled: true # 設置白名單,不填則允許所有訪問 allow: url-pattern: /druid/* # 控制臺管理用戶名和密碼 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
接下來配置DB2
second: spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.ibm.db2.jcc.DB2Driver url: jdbc:db2://<DB2的IP>:<端口>/<數據庫名>:currentSchema=<所要連接的schema名>; username: <用戶名> password: <密碼> # 初始連接數 initialSize: 5 # 最小連接池數量 minIdle: 10 # 最大連接池數量 maxActive: 20 # 配置獲取連接等待超時的時間 maxWait: 60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個連接在池中最小生存的時間,單位是毫秒 minEvictableIdleTimeMillis: 300000 # 配置一個連接在池中最大生存的時間,單位是毫秒 maxEvictableIdleTimeMillis: 900000 # 配置檢測連接是否有效 注意這里DUAL是檢測的表名,可以是當前schema下的任意一張表 validationQuery: SELECT 1 FROM **<檢測表名>** testWhileIdle: true testOnBorrow: false testOnReturn: false webStatFilter: enabled: true statViewServlet: enabled: true # 設置白名單,不填則允許所有訪問 allow: url-pattern: /druid/* # 控制臺管理用戶名和密碼 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這樣就能通過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 配置多數據源 * * */ @Configuration public 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); } /** * 設置數據源 * * @param targetDataSources 備選數據源集合 * @param sourceName 數據源名稱 * @param beanName bean名稱 */ 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時遇到的問題,記錄一下
總結
到此這篇關于springboot的yml配置文件通過db2的方式整合mysql的教程的文章就介紹到這了,更多相關springboot yml配置文件整合mysql內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。