springboot配置多数据源并集成Druid

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012557538/article/details/79218808

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

在需要使用的地方直接注入,即可。

猜你喜欢

转载自blog.csdn.net/u012557538/article/details/79218808