开发者社区> 问答> 正文

SpringBoot中怎么定义多个数据源

问题引述: 通常我们都在application.properties(或yml)中定义单数据源。但由于一些业务需求或系统功能需求,我们需要配置多个数据源,SpringBoot怎么配置多个数据源。

通常我们在配置单数据源时,我们只要如下配置:


spring.datasource.url = [url]
spring.datasource.username = [username]
spring.datasource.password = [password]
spring.datasource.driverClassName = [driverClassName]

然后我们不需要处理任何事务,所有的CRUD操作都是针对这个数据源而言的。

那么我们要怎么样配置两个数据源呢并使用他们呢?

首先,在springboot的application;properties配置文件中配置两个数据源:


#first db
spring.datasource.url = [url1]
spring.datasource.username = [username1]
spring.datasource.password = [password1]
spring.datasource.driverClassName = [driverClassName1]

#second db ...
spring.secondDatasource.url = [url2]
spring.secondDatasource.username = [username2]
spring.secondDatasource.password = [password2]
spring.secondDatasource.driverClassName = [driverClassName2]

这时候,我们就不能那么让springboot自动帮我们配置数据源了。

我们进行如下配置显示配置数据源:


@Component
public class DataSourceConfig{

@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean
@ConfigurationProperties(prefix="spring.secondDatasource")
public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
}


}

这样,我们就能够得到两个数据源了,其中第一个primaryDataSource是主要的数据源。如果不指定,那么SpringBoot也是使用它作为CRUD的数据源。

接下来,针对不同的CRUD,可能需要不同的数据源,所以数据源的一些上层配置,包括entityManagerFactory,TranscationManagerFactory等等都需要进行重新定制数据源配置。关于这一方面的内容,读者可以参考

CRUD操作怎么定制数据源

这篇文章中的内容。

展开
收起
大俊哥哥 2019-12-01 20:48:55 1119 0
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用Spring.Initializr定制工程脚手架 立即下载
陈曦:使用Spring.Initializr定制工程脚手架 立即下载
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载

相关实验场景

更多