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

Spring Boot延迟Flyway实例化循环依赖

夹谷山
2023-03-14

我需要在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个答案

楚良平
2023-03-14

理想情况下,您应该创建所有模式(表、序列等)在flyway中,而不是使用Hibernate生成。我建议导出当前模式,然后创建V1__init-schema。用于flyway to init的sql。然后设置hibernate。hbm2ddl。自动验证或不验证。

须彭亮
2023-03-14

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

谢谢

安东尼奥

 类似资料:
  • 我在试着理解为什么一些简单的环路会以这样的速度运行 第一种情况: 根据IACA,吞吐量是1个周期,瓶颈是端口1,05。我不明白为什么它是1 cylce。毕竟我们有两个循环承载的依赖关系: 而且这种Latency是循环进行的,所以它应该会减慢我们的迭代。 第二种情况: 我更不明白为什么吞吐量是1.65。

  • 问题内容: 因此,当我运行此代码时,我的JFrame变得无响应。我设法将其追溯到gameLoop()下的while循环。无论使用其中调用Thread.sleep()的delay(1000 / FRAMERATE),它都不允许键或鼠标侦听器执行其工作。 下面的完整代码,gameLoop()中存在问题 如果很重要,程序将从此处开始,然后转到Game类 可能无关紧要,但这是github存储库的插件htt

  • 如何在不停止主GUI线程的情况下停止循环?(线程。睡眠(1000)未工作)

  • 问题内容: 我正在使用带有node_redis的Node.js,并遍历一个对象并在Redis中查找数据,然后返回结果。 我有这样的设置: 问题在于,它会在完成对redis的调用之前循环通过。因此,在实际更新总值之前,将调用回调。由于延迟,它似乎也跳过了一些项目。 有没有更好的方法来解决这个问题? 谢谢! 编辑: 好的,所以我这样更新了它: 这似乎可行,它在适当的时间触发了回调,但是似乎只有最后一个

  • 问题内容: 我想在循环内添加延迟/睡眠: 我这样尝试过: 只有第一种情况是正确的:显示后,它将等待3秒钟,然后显示,但随后将不断重复。 我想要的是在显示3秒之后显示出来,然后它需要第二次等待3秒,依此类推。 问题答案: 该函数是非阻塞的,将立即返回。因此,您的循环将非常快速地迭代,并且将快速连续地发起3秒超时触发。这就是为什么您的第一个警报会在3秒钟后弹出,而其余所有警报都将连续不断地出现。 您可

  • 问题内容: 我使用以下代码为基于RotatedTranstion的ImageView创建了动画: 这将产生以下动画: 轮换行动 就像您在动画gif中注意到的那样,动画不是连续的,即在动画周期之间存在很小的延迟(暂停)。 我试图看一下API,但无法弄清楚是什么原因造成了这种延迟以及如何摆脱这种延迟。 问题答案: 每个周期之间的明显停顿是由内插器引起的,默认情况下会使用该插值器(因此它在每个周期的末尾