[英]Spring Boot - Configure and initialise multiple datasources
我正在使用Spring Boot和Liquibase為我的項目初始化數據庫。 由於新的要求,我必須在兩個不同的模式之間拆分數據庫表。
我已經使用@Primary批注為項目配置了兩個數據源,但是我想知道是否有一種方法可以分別初始化兩個數據庫,為每個數據庫創建不同的表。
目前,我只能使用最初擁有的liquibase yaml腳本來初始化主數據庫
是的,Spring中可以使用多個DataSources或任何類型的bean。 只需確保Spring能夠識別在哪個位置自動連線的實例,因此基本上
我設法使用兩個Liquibase bean初始化了兩個數據庫。 在我的Configuration類中,我有以下內容
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "primaryLiquibaseProperties")
@ConfigurationProperties("liquibase-changelogs.primary.liquibase")
public LiquibaseProperties primaryLiquibaseProperties() {
return new LiquibaseProperties();
}
@Bean(name = "liquibase")
public SpringLiquibase primaryLiquibase(@Qualifier("primaryLiquibaseProperties") LiquibaseProperties liquibaseProperties) {
SpringLiquibase primary = new SpringLiquibase();
primary.setDataSource(dataSource());
primary.setChangeLog(primaryLiquibaseProperties().getChangeLog());
return primary;
}
@Bean(name = "metadata_datascource")
@ConfigurationProperties("spring.metadata_datascource")
public DataSource metadataDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "metadataLiquibaseProperties")
@ConfigurationProperties("liquibase-changelogs.metadate.liquibase")
public LiquibaseProperties metadataLiquibaseProperties() {
return new LiquibaseProperties();
}
@Bean(name = "metadata-liquibase")
public SpringLiquibase metadataLiquibase(@Qualifier("metadataLiquibaseProperties") LiquibaseProperties liquibaseProperties) {
SpringLiquibase metadata = new SpringLiquibase();
metadata.setDataSource(metadataDataSource());
metadata.setChangeLog(metadataLiquibaseProperties().getChangeLog());
return metadata;
}
在我的財產中,我有:
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: ...
username: abc
password: abc
jpa:
hibernate:
ddl-auto: update
metadata_datascource:
driver-class-name: org.postgresql.Driver
url: ...
username: abc
password: abc
jpa:
hibernate:
ddl-auto: update
liquibase-changelogs:
primary:
liquibase:
change-log: classpath:db/changelog/primary.yaml
metadata:
liquibase:
change-log: classpath:db/changelog/metadata.yaml
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.