如何在Spring中为多个数据源设置liquibase?

我需要设置liquibasedatasourcesSpring,目前似乎只有一个liquibase设置是可能的,你可以选择哪一个数据源。

回答:

如果您使用的是Spring Boot,则以下设置可以为您提供帮助:

配置类:

@Configuration

public class DatasourceConfig {

@Primary

@Bean

@ConfigurationProperties(prefix = "datasource.primary")

public DataSource primaryDataSource() {

return DataSourceBuilder.create().build();

}

@Bean

@ConfigurationProperties(prefix = "datasource.primary.liquibase")

public LiquibaseProperties primaryLiquibaseProperties() {

return new LiquibaseProperties();

}

@Bean

public SpringLiquibase primaryLiquibase() {

return springLiquibase(primaryDataSource(), primaryLiquibaseProperties());

}

@Bean

@ConfigurationProperties(prefix = "datasource.secondary")

public DataSource secondaryDataSource() {

return DataSourceBuilder.create().build();

}

@Bean

@ConfigurationProperties(prefix = "datasource.secondary.liquibase")

public LiquibaseProperties secondaryLiquibaseProperties() {

return new LiquibaseProperties();

}

@Bean

public SpringLiquibase secondaryLiquibase() {

return springLiquibase(secondaryDataSource(), secondaryLiquibaseProperties());

}

private static SpringLiquibase springLiquibase(DataSource dataSource, LiquibaseProperties properties) {

SpringLiquibase liquibase = new SpringLiquibase();

liquibase.setDataSource(dataSource);

liquibase.setChangeLog(properties.getChangeLog());

liquibase.setContexts(properties.getContexts());

liquibase.setDefaultSchema(properties.getDefaultSchema());

liquibase.setDropFirst(properties.isDropFirst());

liquibase.setShouldRun(properties.isEnabled());

liquibase.setLabels(properties.getLabels());

liquibase.setChangeLogParameters(properties.getParameters());

liquibase.setRollbackFile(properties.getRollbackFile());

return liquibase;

}

...

}

properties.yml

datasource:

primary:

url: jdbc:mysql://localhost/primary

username: username

password: password

liquibase:

change-log: classpath:/db/changelog/db.primary.changelog-master.xml

secondary:

url: jdbc:mysql://localhost/secondary

username: username

password: password

liquibase:

change-log: classpath:/db/changelog/db.secondary.changelog-master.xml

以上是 如何在Spring中为多个数据源设置liquibase? 的全部内容, 来源链接: utcz.com/qa/431586.html

回到顶部