【发布时间】:2015-04-16 23:40:29
【问题描述】:
我想在我的 Spring Boot 项目中使用 Flyway 作为首选的数据库迁移处理方式(使用当前的 V1.2.1.RELEASE)。
到目前为止,这一切正常,但是使用 JDBC 数据源与 Spring Security 的集成似乎覆盖了 Flyway 机制。
以下简单场景:
- Spring Boot 1.2.1
- PostgreSQL 9.4.1
- 根据 Spring Security 文档用于用户、组和权限的 Flyway 迁移脚本
问题: Flyway 迁移脚本在启动时未按预期执行。
可能的原因:似乎只有在使用 Spring Boot 项目至少也使用 JPA 的情况下,Flyway 才会在启动时执行。由于 Spring Security 基于普通 JDBC,我尝试临时使用 Spring Boot 文档(第 68.3 章)中描述的基于 JDBC 的数据库初始化方案,但(如文档所述)这种方式就像“穷人方法”我真的很想将 Flyway 也用于这些包含用户/组/权限信息的表。
【问题讨论】:
-
flyway 的使用与 JPA 或任何现有技术无关(至少它不应该是一个错误)。把你试过的配置贴出来,哪个不行,也多解释一下什么不行。
-
似乎在 Flyway 迁移发生之前初始化了安全上下文:创建名称为“securityFilterChainRegistration”的bean时出错:org.postgresql.util.PSQLException:错误:关系“用户”不存在根据到日志和数据库没有发生 Flyway 迁移。如果我暂时禁用我的自定义 WebSecurityConfigurerAdapter,为用户和组创建所需表的 Flyway 迁移将在应用程序启动时按预期执行。所以我的猜测是在创建 spring 应用上下文时会出现某种排序问题
标签: jdbc spring-security spring-boot flyway