我正在使用Spring Boot和Liquibase爲我的項目初始化數據庫。由於新的要求,我必須在兩種不同的模式之間分割我的數據庫表。Spring Boot - 配置和初始化多個數據源
我已經設法使用@Primary註釋爲我的項目配置兩個數據源,但我想知道是否有方法分別初始化兩個數據庫,爲每個數據庫創建不同的表。
目前我只能讓我的主數據庫使用liquibase YAML腳本,我本來
我正在使用Spring Boot和Liquibase爲我的項目初始化數據庫。由於新的要求,我必須在兩種不同的模式之間分割我的數據庫表。Spring Boot - 配置和初始化多個數據源
我已經設法使用@Primary註釋爲我的項目配置兩個數據源,但我想知道是否有方法分別初始化兩個數據庫,爲每個數據庫創建不同的表。
目前我只能讓我的主數據庫使用liquibase YAML腳本,我本來
當我設法初始化由這兩個數據庫使用兩個Liquibase豆子。 在我的配置類,我有以下
@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
是,多個數據源或任何類型的bean可以在Spring中初始化。它只是需要確保春季是能夠識別自動裝配該實例,其中,所以基本上
很抱歉,但這個不回答我關於初始化的問題。正如我上面寫的,我可以配置這兩個數據源,但我不能讓liquibase使用Liquibase來初始化它們。 除非你建議使用不同數據源的兩個liquibase bean。如果是這樣的話,你能舉一個例子來說明如何做到這一點嗎? – mariosk89