您的位置:首页 > 编程语言 > Java开发

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;}

在需要使用的地方直接注入,即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息