Springboot配置多数据源

开发经常遇到需要配置多个数据源的情况,比如:使用多个host或多种数据库MySql/Oracle/SqlServer情况,使用springboot可以如下配置:

配置文件 application.properties


spring.datasource.test1.mysql.jdbc-url =jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true

spring.datasource.test1.mysql.username = root

spring.datasource.test1.mysql.password = 123456

spring.datasource.test1.mysql.driver-class-Name = com.mysql.jdbc.Driver



spring.datasource.test2.mysql.jdbc-url =jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true

spring.datasource.test2.mysql.username = root

spring.datasource.test2.mysql.password = 1314

spring.datasource.test2.mysql.driver-class-Name = com.mysql.jdbc.Driver

Springboot配置


import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DataSourceBuilder;

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 javax.sql.DataSource;



@Configuration

public class DataSourceConfig {



    @Bean(name = test1DataSource)

    @Primary

    @ConfigurationProperties(prefix=spring.datasource.test1.mysql)

    public DataSource testDataSource() {

        return DataSourceBuilder.create().build();

    }



    @Bean(name = test2DataSource)

    @ConfigurationProperties(prefix = spring.datasource.test2.mysql)

    public DataSource formalDataSource() {

        return DataSourceBuilder.create().build();

    }



    @Bean(name=test1JdbcTemplate)

    public JdbcTemplate test1JdbcTemplate (

            @Qualifier(test1DataSource)  DataSource testDataSource ) {

        return new JdbcTemplate(testDataSource);

    }



    @Bean(name = test2JdbcTemplate)

    public JdbcTemplate formalJdbcTemplate(

            @Qualifier(test2DataSource) DataSource formalDataSource){

        return new JdbcTemplate(formalDataSource);

    }

	

}

注意事项

  • @Qualifier注解 限定描述符能根据名字进行注入。
  • @Primary注解 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者。
  • @Primary注解 只能用于其中一个DataSource。

实际使用时可能还会多mybatis等相关配置,但是原理一样。 这是比较简洁的配置方式,其它方式还有AOP等。

 

Springboot请求参数校验 Springboot配置扫描其它模块路径的方法
微信公众号