首页 > 解决方案 > Spring Boot 延迟 Flyway 初始化循环依赖

问题描述

在 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的依赖形成了一个循环:

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

我该如何解决?

标签: javaspringspring-boot

解决方案


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

谢谢

安东尼奥


推荐阅读