当前位置: 首页 > 知识库问答 >
问题:

创建在类路径资源中定义了名为“liquibase”的bean时出错:循环依赖于“liquibase”之间的关系

米嘉禧
2023-03-14

在升级到spring boot 2.6.3之后,我遇到了这个错误,我试图回滚到旧的不同spring boot版本,但这并不能解决问题。Spring boot版本:2.6.3 Liquibase版本4.5.0

Liquibase配置:@Configuration public class LiquibaseConfig{

 @Autowired
 private DataSource dataSource;
 

 @Bean
 public LiquibaseProperties liquibaseProperties() {
        return new LiquibaseProperties();
    }

 @DependsOn("entityManagerFactory")
  @Bean("liquibase")
  public SpringLiquibase liquibase() {
        LiquibaseProperties liquibaseProperties = liquibaseProperties();
        SpringLiquibase liquibase = new SpringLiquibase();
        liquibase.setChangeLog(liquibaseProperties.getChangeLog());
        liquibase.setContexts(liquibaseProperties.getContexts());
        liquibase.setDataSource(dataSource);
        liquibase.setDefaultSchema(liquibaseProperties.getDefaultSchema());
        liquibase.setDropFirst(liquibaseProperties.isDropFirst());
        liquibase.setShouldRun(true);
        liquibase.setLabels(liquibaseProperties.getLabels());
        liquibase.setChangeLogParameters(liquibaseProperties.getParameters());
        return liquibase;
    }

}

启动项目后出错:

组织。springframework。豆。工厂BeanCreationException:创建名为“liquibase”的bean时出错,该bean在类路径资源[LiquibaseConfig.class]中定义:循环依赖于组织中“liquibase”和“entityManagerFactory”之间的关系。springframework。豆。工厂支持抽象工厂。doGetBean(AbstractBeanFactory.java:317)~[spring-beans-5.3.16.jar:5.3.16]位于org。springframework。豆。工厂支持抽象工厂。getBean(AbstractBeanFactory.java:208)~[spring-beans-5.3.16.jar:5.3.16]位于org。springframework。豆。工厂支持抽象工厂。doGetBean(AbstractBeanFactory.java:322)~[spring-beans-5.3.16.jar:5.3.16]位于org。springframework。豆。工厂支持抽象工厂。getBean(AbstractBeanFactory.java:208)~[spring-beans-5.3.16.jar:5.3.16]位于org。springframework。上下文支持AbstractApplicationContext。getBean(AbstractApplicationContext.java:1154)~[spring-context-5.3.16.jar:5.3.16]位于org。springframework。上下文支持AbstractApplicationContext。在org上完成BeanFactoryInitialization(AbstractApplicationContext.java:908)~[spring-context-5.3.16.jar:5.3.16]。springframework。上下文支持AbstractApplicationContext。在org上刷新(AbstractApplicationContext.java:583)~[spring-context-5.3.16.jar:5.3.16]。springframework。靴子网状物servlet。上下文ServletWebServerApplicationContext。在org上刷新(ServletWebServerApplicationContext.java:145)~[spring-boot-2.6.4.jar:2.6.4]。springframework。靴子Spring应用程序。在org上刷新(SpringApplication.java:740)~[spring-boot-2.6.4.jar:2.6.4]。springframework。靴子Spring应用程序。refreshContext(SpringApplication.java:415)~[spring-boot-2.6.4.jar:2.6.4]位于org。springframework。靴子Spring应用程序。在org上运行(SpringApplication.java:303)~[spring-boot-2.6.4.jar:2.6.4]。springframework。靴子Spring应用程序。在org上运行(SpringApplication.java:1312)~[spring-boot-2.6.4.jar:2.6.4]。springframework。靴子Spring应用程序。运行(SpringApplication.java:1301)~[spring-boot-2.6.4.jar:2.6.4]到[package name]。测试申请。main(TestApplication.java:10)~[classes/:na]

共有1个答案

雍志新
2023-03-14

虽然不建议将Hibernate和Liquibase的数据库初始化混合使用(您应该真正单独使用Liquibase,因为它将更容易发展应用程序的数据库模式),但您可以通过设置spring来选择这种行为。jpa。将数据源初始化推迟到true

 类似资料: