Spring Boot推迟了Flyway初始化的循环依赖性

时间:2019-10-22 08:11:12

标签: java spring spring-boot

在Hibernate生成所有架构表之后,我需要执行Flyway迁移。 在迁移到Spring Boot 2.2之前,此代码可以正常工作

@Configuration
public class BaseFlywayConfiguration {

    /**
     * Override default flyway initializer to do nothing
     */
    @Bean
    FlywayMigrationInitializer flywayInitializer(Flyway flyway) {
        return new FlywayMigrationInitializer(flyway, (f) -> {
        });
    }

    /**
     * Create a second flyway initializer to run after jpa has created the schema
     */
    @Bean
    @DependsOn("transactionManager")
    FlywayMigrationInitializer delayedFlywayInitializer(Flyway flyway) {
        return new FlywayMigrationInitializer(flyway, null);
    }

}

不幸的是,在迁移到Spring Boot 2.2.0之后,我收到了与循环依赖相关的异常

这是日志:

应用程序上下文中某些bean的依赖性形成一个循环:

┌─────┐ |在类路径资源[com / myFleetSolutions / myFleet / organization / configuration / jpa / JPAConfigurationDev.class]中定义的transactionManager └─────┘

我该如何解决?

2 个答案:

答案 0 :(得分:0)

理想情况下,您将在飞行通道中创建所有架构(表,序列等),而不使用Hibernate生成该架构。我建议您导出当前的架构,然后创建一个V1__init-schema.sql以便进行初始化。然后将LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return ConstrainedBox( constraints: BoxConstraints( maxHeight: 0, maxHeight: constraints.maxWidth, minWidth: constraints.maxWidth, maxWidth: constraints.maxWidth, ), child: [CONTENT_HERE] ); } ) 设置为验证或不验证。

答案 1 :(得分:0)

我只是将Flyway bean注入了@SpringBootApplication类,并在CommandLineRunner init方法中执行了flyway.migrate()。 它在系统启动结束时执行,并且工作正常

谢谢

安东尼奥