我正在設置liquibase來管理我的數據庫在一個新的春季啓動應用程序的過程。我需要在我的類路徑中使用liquibase依賴項來在某些集成測試運行後重置數據庫狀態。在測試期間,我不希望在應用程序上下文初始化期間通過spring auto config啓用liquibase。我已經嘗試將liquibase.enabled = false添加到application.properties,但是當我調試LiquibaseAutoConfiguration類時,它顯示啓用始終設置爲true。春季開機不尊重liquibase屬性
我不是新來的春天,但我是新的春季引導的自動配置。有沒有人有過彈簧引導不尊重application.properties屬性的問題?
我的設置是相當小:
相關代碼片段:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringBootClass.class })
public class databaseTests{
@Before
public void setup() throws LiquibaseException, SQLException {
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(dataSource.getConnection()));
Liquibase liquibase = new Liquibase("db/changelog/db.changelog-master.yaml", new FileSystemResourceAccessor("src/main/resources/"),database);
liquibase.dropAll();
liquibase.update("test");
}
..
}
@SpringBootApplication
@Import({ DataSourceConfig.class, HibernateConfig.class, OauthConfig.class })
@EnableConfigurationProperties
public class SpringBootClass {
..
}
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.6.RELEASE</version>
<!-- <liquibase.version>3.3.5</liquibase.version> -->
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<scope>test</scope>
</dependency>
這也是一個很好的解決方案,最終因爲我不需要這些測試的彈簧啓動,所以我最終在上面的回答中使用了ConfigFileAplicationContextInitializer。感謝您花時間回答,我會接受您的答案爲正確答案 – ctwomey1