我需要在Spring中爲兩個數據源設置liquibase,目前似乎只有一個liquibase設置是可能的,您可以選擇哪個數據源。如何在Spring中爲多個數據源設置liquibase?
2
A
回答
8
如果使用的是春天開機,這裏是設置它可以幫助你:
配置類:
@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;
}
...
}
性能。 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
0
只要有2個數據源和2種豆
<bean id="liquibase1" class="liquibase.integration.spring.SpringLiquibase">
<property name="dataSource" ref="dataSource1" />
<property name="changeLog" value="classpath:db1-changelog.xml" />
</bean>
<bean id="liquibase2" class="liquibase.integration.spring.SpringLiquibase">
<property name="dataSource" ref="dataSource2" />
<property name="changeLog" value="classpath:db2-changelog.xml" />
</bean>
+0
如果我們需要以混合順序運行腳本,該怎麼辦?我們的情況下,我們需要運行一個腳本,從dataSource1然後dataSource2,然後再dataSource1 ... – mCeviker
0
您也可以運行多個liquibase實例(即不僅限於小學和中學)。
例如你的配置Java可以有:
@Bean
@ConfigurationProperties(prefix = "liquibase1")
...
@Bean
@ConfigurationProperties(prefix = "liquibase2")
...
@Bean
@ConfigurationProperties(prefix = "liquibase3")
你application.property可以有:
liquibase1.default-schema=schemaA
...
liquibase2.default-schema=schemaB
...
liquibase3.default-schema=schemaC
...
和(令人興奮的),這些springLiquibase情況下,可以使用相同的數據源,或者不同的數據源......但是你喜歡它。
運行命令?我沒有發現任何官方文檔,根據我在調試中觀察到的情況,所有liquibase遷移均按照您在application.properties中編寫的順序運行。那些想要在一個數據源中運行遷移,然後轉到另一個數據源,然後返回到這個數據源並運行其他東西,您可能想要嘗試使用這種多重liquibase實例方法。
相關問題
- 1. Spring和Mybatis多個數據源設置
- 2. Spring + MyBatis - 設置數據源
- 3. LIQUIBASE LIQUIBASE:將小數位數設置爲列數據類型
- 4. 如何爲Spring JPA設置多個XA數據空間的JTA?
- 5. 如何設置彈簧數據的JPA與多個數據源
- 6. 如何使用Spring @Configuration類配置多個JPA數據源?
- 7. 如何在jsp中設置數據源?
- 8. 如何在Spring Boot中使用多個數據源時設置多個連接池?
- 9. 使用Spring Cloud設置數據源
- 10. 爲combobox設置數據源
- 11. 在Spring 3.0中配置數據源
- 12. 如何設置Spring Boot + Bitronix +非XA數據源+ XA JMS連接
- 13. 如何設置Spring/Heroku/postgres SSL數據源
- 14. 設置Cassandra Liquibase
- 15. 多個數據源配置
- 16. Spring引導多個數據源
- 17. 使用Spring的多個數據源JPA
- 18. 將多個對象設置爲水晶報表的數據源
- 19. 如何爲Sybase數據源設置DB2 Express-C數據聯合?
- 20. Spring + Liquibase
- 21. Spring Data中的多個數據源使用Spring Boot的JPA,
- 22. 如何爲多個數據框設置列名爲小寫?
- 23. 如何在Spring XML元數據配置中爲Bean設置ServletContext屬性
- 24. 在Spring中爲不同的數據源設置事務的正確方法?
- 25. 如何設置單個數組或字典以用於多個數據源?
- 26. 使用Spring MVC配置MyBatis以獲得多個數據源
- 27. Spring Boot - 配置和初始化多個數據源
- 28. 設置數據源
- 29. 如何讓Spring testcontext框架使用多個數據源?
- 30. 如何將數據源設置爲C#中的Datagridview控件#
這適用於向Application類添加@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class),但我在本地和數據文件上使用h2在禁用自動配置時不會再加載。我怎樣才能強制spring加載沒有模式文件的數據文件? –
你有什麼樣的數據文件? – dimuha
data-h2.sql文件 –