SpringBoot2.x实践之多数据源配置

Spring 要使用多数据源,需要在 Spring 容器中放入多个 DataSource。DataSource 是 javax.sql 包中的一个接口,这个接口有多种实现,常见的有 c3p0 中的 ComboPooledDataSource 连接池,druid 的 DruidDataSource ,都实现了 DataSource 接口。

我们以 druid 举例,通过 @Bean 标签在 Spring 容器中放入多个实例。
多数据源代码如下:

/**
 * 多数据源配置
 */
@Configuration
public class DataSourceAutoConfiguration {

    /**
     * 数据源一,@Primary 修饰,不指定的情况下默认为此数据源
     * 多数据源的情况下不指定默认数据源,EntityManagerFactoryBuilder 会报错
     *
     * @return dataSourceOne
     */
    @Bean
    @Primary
    @ConfigurationProperties("spring.datasource.druid.one")
    public DataSource dataSourceOne() {
        return DruidDataSourceBuilder.create().build();
    }

    /**
     * 数据源二
     *
     * @return dataSourceTwo
     */
    @Bean
    @ConfigurationProperties("spring.datasource.druid.two")
    public DataSource dataSourceTwo() {
        return DruidDataSourceBuilder.create().build();
    }

}

多数据源配置如下,两个数据源连接的 url 不一样:

# 数据源一 配置
spring.datasource.druid.one.url=jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.druid.one.username=root
spring.datasource.druid.one.password=
spring.datasource.druid.one.name=druid-one
# 数据源二 配置
spring.datasource.druid.one.url=jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.druid.one.username=root
spring.datasource.druid.one.password=
spring.datasource.druid.one.name=druid-one

@Configuration 指定了一个配置类,@Bean 向 Spring 容器中放入多个实例, @ConfigurationProperties 指定了相应配置的前缀,@ConfigurationProperties(“spring.datasource.druid.one”) 会读取 spring.datasource.druid.one 前缀的配置,@ConfigurationProperties(“spring.datasource.druid.two”) 会读取 spring.datasource.druid.two 前缀的配置。

发布了21 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/SudaDays/article/details/100072452
今日推荐