亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 springboot 和 liquibase 在內存數據庫中

如何使用 springboot 和 liquibase 在內存數據庫中

慕婉清6462132 2022-07-06 15:55:02
使用 liquibase 和 springboot ,創建了數據庫更改日志并能夠使用 maven-liquibase-plugin (mvn liquibase:update) 成功運行它。我正在編寫集成測試,其中需要以編程方式創建 liquibase 更改。@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = DummyApplication.class)@ActiveProfiles("test")public class TestDummyService{    @Autowired    private SpringLiquibase springLiquibase;    ...    @Test    public void testDummyRequest()    {    try {        Connection connection = springLiquibase.getDataSource().getConnection();        Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));        Liquibase liquibase = new liquibase.Liquibase("liquibase/changelog/db-changelog-master.xml", new ClassLoaderResourceAccessor(), database);        liquibase.update(new Contexts(springLiquibase.getContexts()), new LabelExpression(springLiquibase.getLabels()));    } catch (LiquibaseException | SQLException e) {        e.printStackTrace();    }}運行上述測試時出現以下異常。java.lang.IllegalStateException:無法在 org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext 加載 ApplicationContext(DefaultCacheAwareContextLoaderDelegate.java:125)原因:org.springframework.beans.factory.BeanCreationException:在類路徑資源 [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class] 中定義名稱為“liquibase”的 bean 創建錯誤:通過工廠方法進行 Bean 實例化失敗; 嵌套異常是 org.springframework.beans.BeanInstantiationException:無法實例化 [liquibase.integration.spring.SpringLiquibase]:工廠方法“liquibase”拋出異常;嵌套異常是 java.lang.NoSuchMethodError: liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)V引起:java.lang.NoSuchMethodError: liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)
查看完整描述

1 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

Spring Boot 2.1.3 依賴于 Liquibase 3.6.3,但您在 pom.xml 中指定了 3.4.2。

話雖如此,Spring Boot 的 Liquibase 自動配置將完成您在單元測試中編寫的所有內容,因為您已經創建了屬性來激活自動配置。您可以刪除測試方法中的所有代碼,而只需將 @Autowire 一個 DataSource 放入測試類。Spring 將為您應用 Liquibase 更改日志。

最后一件事:如果可以,最好將 a 添加<parent>到您的 pom.xml 中,這意味著您不需要指定每個依賴項(包括 Liquibase)的各個版本。Spring Boot 有很多依賴項,并且在升級時保持版本同步需要做很多工作。這也會阻止您的 NoSuchMethodError。


查看完整回答
反對 回復 2022-07-06
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號