Spring Boot 配置2个数据源
原文链接:https://stackoverflow.com/questions/30337582/spring-boot-configure-and-use-two-datasources
问题描述
我该如何使用spring boot配置2个数据源?
下面的例子是我的第一个数据源配置:
application.properties
#first db
spring.datasource.url = [url]
spring.datasource.username = [username]
spring.datasource.password = [password]
spring.datasource.driverClassName = oracle.jdbc.OracleDriver
#second db ...
Application class
@SpringBootApplication
public class SampleApplication
{
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
}
我该如何修改application.properties
文件使得我能够添加另一个数据源?
我该如何注入数据源,给不同的repository使用呢?
答案
就像这样。
添加到你的application.properties
文件中:
#first db
spring.datasource.url = [url]
spring.datasource.username = [username]
spring.datasource.password = [password]
spring.datasource.driverClassName = oracle.jdbc.OracleDriver
#second db ...
spring.secondDatasource.url = [url]
spring.secondDatasource.username = [username]
spring.secondDatasource.password = [password]
spring.secondDatasource.driverClassName = oracle.jdbc.OracleDriver
在任意带有@Configuration的注解类中添加以下方法:
@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();
}
评论
- 看一下这个链接https://www.baeldung.com/spring-data-jpa-multiple-databases,这里描述了同样的你在找的东西。
- 有时候你需要指定datasource, transactionManager, and SqlSessionFactory这3者都为primary。
- 好的,但是我有2个不同的JPARepositories – Spring Boot怎么知道使用哪一个数据源呢?每个JPARepository都要使用不同的数据库。
- 这篇博客可能是你要找的https://www.javadevjournal.com/spring-boot/multiple-data-sources-with-spring-boot/