在启动 webapp 之前使用 Spring 到 运行 Flyway 迁移

Use Spring to run Flyway migration before starting webapp

我们使用 Spring 并将 Flyway 集成到一个使用 DispatcherServlet 并运行后台数据库线程的 Web 应用程序中。

如何控制 Spring 的执行流程,以便迁移发生在 之前 它启动?延迟 DispatcherServlet 启动和控制器创建应该足以满足我们的目的。

我认为 Flyway Callbacks 的 afterMigrate 方法正是您要找的。

您可以在单独的工厂中为您的 spring MVC 内容设置飞路。这样你就可以强制工厂在特定的 MVC 东西出现之前完全创建和完成 flyway 和其他业务逻辑等。

我建议您在任何情况下都将这两个问题分离到不同的工厂中,因为它很好地分离了两个上下文。

实现此目的的一种方法是在 spring MVC 东西之前使用侦听器启动业务 logic/flyway 工厂...

你真正想要的是 Flyway 在你的持久层出现之前迁移数据库。

由于您的控制器已经依赖于此持久层,因此您现在需要使持久层本身依赖于 Flyway。使用 XML 配置,这可以使用 official docs.

中描述的依赖属性来实现

你可以试试Spring Boot flyway支持http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

我没用过,但我希望它 运行 它之前的飞路脚本 "starts" "real" 应用程序。 (不然就没啥用了)