赞
踩
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 1from 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 1from **<检测表名>** 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(); returndruidproperties.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(); returndruidproperties.datasource(datasource); } @bean @configurationproperties("second.spring.datasource") public datasource db2datasource(druidproperties druidproperties) { druiddatasource datasource = druiddatasourcebuilder.create().build(); returndruidproperties.datasource(datasource); } @bean(name = "dynamicdatasource") @primary public dynamicdatasource datasource(datasource masterdatasource) { map<object, object> targetdatasources = newhashmap<>(); targetdatasources.put(datasourcetype.master.name(), masterdatasource); setdatasource(targetdatasources, datasourcetype.slave.name(), "slavedatasource"); setdatasource(targetdatasources, datasourcetype.db2.name(), "db2datasource"); returnnewdynamicdatasource(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) { } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。