我需要设置liquibase两datasources中Spring,目前似乎只有一个liquibase设置是可能的,你可以选择哪一个数据源。
liquibase
datasources
Spring
如果您使用的是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