springboot配置多数据源并集成Druid
2018-01-31 16:47
891 查看
1.application.properties配置文件
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
#----DS1----
spring.datasource.primary.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test1
spring.datasource.primary.username=sa
spring.datasource.primary.password=123456
#----DS2---
spring.datasource.secondary.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test2
spring.datasource.secondary.username=sa
spring.datasource.secondary.password=123456
#DS3
spring.datasource.third.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test3
spring.datasource.third.username=sa
spring.datasource.third.password=123456
#---------------------------------------------------------------------------------------
spring.datasource.primary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.secondary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.third.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.druid.initial-size = 5
spring.datasource.druid.max-active = 20
spring.datasource.druid.min-idle = 5
spring.datasource.druid.max-wait= 30000
以上为最基本配置。
注:druid如果不配置Filter,默认是开启的,譬如web-stat-filter、stat-view-servlet等,可以通过配置属性覆盖默认配置,例如:
# WebStatFilter monitor
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=
\*
spring.datasource.druid.web-stat-filter.exclusions= *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=
false
spring.datasource.druid.web-stat-filter.session-stat-max-count=
1000
#\u76D1\u63A7\u5355\u4E2Aurl\u8C03\u7528\u7684sql\u5217\u8868
spring.datasource.druid.web-stat-filter.profile-enable=true
# StatViewServlet ,it configs who can visit
spring.datasource.druid.stat-view-servlet.enabled= true
spring.datasource.druid.stat-view-servlet.url-pattern=
/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=
true
spring.datasource.druid.stat-view-servlet.login-username=
admin
spring.datasource.druid.stat-view-servlet.login-password=
admin123
spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1
如果设置了StatViewServlet,即配置了监控池认证,要进监控池需要输入http://127.0.0.1:8083/druid/login.html,如果没配置,直接输入http://127.0.0.1:8083/druid/即可
接下来是正式的数据源配置:
package cn.do1shoje.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
/**
* 多数据源,集成druid
* @author shoje
*
*/
@Configuration
public class DSConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource(){
return DruidDataSourceBuilder.create().build();
//return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource(){
return DruidDataSourceBuilder.create().build();
//return DataSourceBuilder.create().build();
}
@Bean(name = "thirdDataSource")
@Qualifier("thirdDataSource")
@ConfigurationProperties(prefix = "spring.datasource.third")
public DataSource thirdDataSource(){
return DruidDataSourceBuilder.create().build();
//return DataSourceBuilder.create().build();
}
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);
}
@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);
}
@Bean(name = "thirdJdbcTemplate")
public JdbcTemplate thirdJdbcTemplate(@Qualifier("thirdDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
这里我使用时遇到一个问题,就是构建DataSource时,一直用的JDBC的DataSourceBuilder在构建数据源,然后发觉怎么查看日志都发现Druid没有生效,一开始我是没有发觉的,因为用DBC的DataSourceBuilder在构建数据源,程序是正常的,调用数据库也是正常的,只是druid未生效而已,直到我查看druid的监控池后,才发现这个druid未生效,为什么呢?因为druid监控池中的几个指标全是空的,连数据源那个指标都是空的,当即判断,druid未生效。改用DruidDataSourceBuilder构建数据源即解决springboot整合多数据源和Druid的问题。
数据源配置完了,则是使用问题。
@RestController
@RequestMapping("/api/v1")
public class InfoController {
private Logger log = LoggerFactory.getLogger(InfoController.class);
private static final String DEFAULT_PAGE_START = "0";
private static final String DEFAULT_PAGE_SIZE = "10";
@Autowired
@Qualifier("primaryJdbcTemplate")
private JdbcTemplate jt;
@Autowired
@Qualifier("secondaryJdbcTemplate")
private JdbcTemplate jt2;}
在需要使用的地方直接注入,即可。
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
#----DS1----
spring.datasource.primary.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test1
spring.datasource.primary.username=sa
spring.datasource.primary.password=123456
#----DS2---
spring.datasource.secondary.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test2
spring.datasource.secondary.username=sa
spring.datasource.secondary.password=123456
#DS3
spring.datasource.third.url=jdbc:sqlserver://127.0.0.1:1433;databasename=test3
spring.datasource.third.username=sa
spring.datasource.third.password=123456
#---------------------------------------------------------------------------------------
spring.datasource.primary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.secondary.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.third.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.druid.initial-size = 5
spring.datasource.druid.max-active = 20
spring.datasource.druid.min-idle = 5
spring.datasource.druid.max-wait= 30000
以上为最基本配置。
注:druid如果不配置Filter,默认是开启的,譬如web-stat-filter、stat-view-servlet等,可以通过配置属性覆盖默认配置,例如:
# WebStatFilter monitor
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=
\*
spring.datasource.druid.web-stat-filter.exclusions= *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=
false
spring.datasource.druid.web-stat-filter.session-stat-max-count=
1000
#\u76D1\u63A7\u5355\u4E2Aurl\u8C03\u7528\u7684sql\u5217\u8868
spring.datasource.druid.web-stat-filter.profile-enable=true
# StatViewServlet ,it configs who can visit
spring.datasource.druid.stat-view-servlet.enabled= true
spring.datasource.druid.stat-view-servlet.url-pattern=
/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=
true
spring.datasource.druid.stat-view-servlet.login-username=
admin
spring.datasource.druid.stat-view-servlet.login-password=
admin123
spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1
如果设置了StatViewServlet,即配置了监控池认证,要进监控池需要输入http://127.0.0.1:8083/druid/login.html,如果没配置,直接输入http://127.0.0.1:8083/druid/即可
接下来是正式的数据源配置:
package cn.do1shoje.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
/**
* 多数据源,集成druid
* @author shoje
*
*/
@Configuration
public class DSConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource(){
return DruidDataSourceBuilder.create().build();
//return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource(){
return DruidDataSourceBuilder.create().build();
//return DataSourceBuilder.create().build();
}
@Bean(name = "thirdDataSource")
@Qualifier("thirdDataSource")
@ConfigurationProperties(prefix = "spring.datasource.third")
public DataSource thirdDataSource(){
return DruidDataSourceBuilder.create().build();
//return DataSourceBuilder.create().build();
}
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);
}
@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);
}
@Bean(name = "thirdJdbcTemplate")
public JdbcTemplate thirdJdbcTemplate(@Qualifier("thirdDataSource")DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
这里我使用时遇到一个问题,就是构建DataSource时,一直用的JDBC的DataSourceBuilder在构建数据源,然后发觉怎么查看日志都发现Druid没有生效,一开始我是没有发觉的,因为用DBC的DataSourceBuilder在构建数据源,程序是正常的,调用数据库也是正常的,只是druid未生效而已,直到我查看druid的监控池后,才发现这个druid未生效,为什么呢?因为druid监控池中的几个指标全是空的,连数据源那个指标都是空的,当即判断,druid未生效。改用DruidDataSourceBuilder构建数据源即解决springboot整合多数据源和Druid的问题。
数据源配置完了,则是使用问题。
@RestController
@RequestMapping("/api/v1")
public class InfoController {
private Logger log = LoggerFactory.getLogger(InfoController.class);
private static final String DEFAULT_PAGE_START = "0";
private static final String DEFAULT_PAGE_SIZE = "10";
@Autowired
@Qualifier("primaryJdbcTemplate")
private JdbcTemplate jt;
@Autowired
@Qualifier("secondaryJdbcTemplate")
private JdbcTemplate jt2;}
在需要使用的地方直接注入,即可。
相关文章推荐
- Spring Boot : 集成mybatis、pagehelper插件、开启事务、druid数据源配置、mybatis-generator(十一)
- spring boot 集成druid,监控配置
- 从0开始学习SpringCould(5)--SpringBoot 集成Mybatis使用Druid数据源
- Spring Boot 集成 Mybatis(druid 数据库连接池 以及 分页配置)
- spring-boot | 使员Druid 整合Mybatis 最简配置多数据源
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
- SpringBoot配置多数据源(结合Druid)
- 170628、springboot编程之Druid数据源和监控配置一
- spring boot druid mybatis 多数据源 配置
- spring boot druid mybatis 多数据源 配置
- springboot-7-配置druid数据源监视
- spring-boot 集成Druid数据源
- SpringBoot 集成MyBatis ,druid 数据源
- springboot+DruidDataSource 双数据源配置
- SpringBoot使用Druid数据源的配置方法
- spring boot + mybatis + druid 配置双数据源
- springboot配置druid数据源和监控
- 170629、springboot编程之Druid数据源和监控配置二
- 数据源--Springboot配置使用Druid数据源
- spring-boot入门(七)atomikos+druid+多数据源下的分布式事务配置