springboot的yml配置文件通过db2的方式整合mysql的教程

所属分类: 软件编程 / java 阅读数: 87
收藏 0 赞 0 分享

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时遇到的问题,记录一下

更多精彩内容其他人还在看

利用MultipartFile实现文件上传功能

这篇文章主要为大家详细介绍了利用MultipartFile实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java编程实现NBA赛事接口调用实例代码

这篇文章主要介绍了Java编程实现NBA赛事接口调用实例代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java编程之双重循环打印图形

这篇文章主要介绍了Java编程之双重循环打印图形,属于Java编程基础练习部分,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

java基础学习JVM中GC的算法

这篇文章主要介绍了java基础学习JVM中GC的算法,通过图文加深对GC算法思路的理解。
收藏 0 赞 0 分享

Java编程Post数据请求和接收代码详解

这篇文章主要介绍了Java编程Post数据请求和接收代码详解,涉及enctype的三种编码,post与get等相关内容,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Retrofit+Rxjava实现文件上传和下载功能

这篇文章主要介绍了Retrofit+Rxjava实现文件上传和下载功能,文中提到了单文件上传和多文件上传及相关参数的请求,需要的朋友参考下吧
收藏 0 赞 0 分享

Retrofit+Rxjava下载文件进度的实现

这篇文章主要介绍了Retrofit+Rxjava下载文件进度的实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java检查服务器的连通两种方法代码分享

这篇文章主要介绍了java检查服务器的连通两种方法代码分享,涉及ping的介绍以及检查服务器连通的两种方法代码示例,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java/Android 获取网络重定向文件的真实URL的示例代码

本篇文章主要介绍了Java/Android 获取网络重定向文件的真实URL的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java并发编程之同步器代码示例

这篇文章主要介绍了java并发编程之同步器代码示例,分享了相关代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享
查看更多