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

所属分类: 软件编程 / java 阅读数: 72
收藏 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时遇到的问题,记录一下

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

Javaweb 鼠标移入移出表格颜色变化的实现

这篇文章主要介绍了Javaweb 鼠标移入移出表格颜色变化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Java 实现图片压缩的两种方法

这篇文章主要介绍了Java 实现图片压缩的两种方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

据说这个是可以撸到2089年的idea2020.2(推荐)

这篇文章主要介绍了据说这个是可以撸到2089年的idea2020.2,本教程给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

这篇文章主要介绍了一篇文章带你搞定SpringBoot不重启项目实现修改静态资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

win10操作系统下重启电脑java环境变量失效

这篇文章主要介绍了win10操作系统下重启电脑java环境变量失效,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Java实现批量修改文件名和重命名的方法

这篇文章主要介绍了Java实现批量修改文件名和重命名的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

关于Java HashMap自动排序的简单剖析

这篇文章主要给大家介绍了关于Java HashMap自动排序的简单剖析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring中BeanFactory和ApplicationContext的作用和区别(推荐)

这篇文章主要介绍了Spring中BeanFactory和ApplicationContext的作用和区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java程序执行Cmd指令所遇问题记录及解决方案

这篇文章主要介绍了Java程序执行Cmd指令所遇问题记录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

深入浅析jni中的java接口使用

这篇文章主要介绍了jni中的java接口使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多