Spring Boot集成JPA与Liquibase出现liquibase与entityManagerFactory循环依赖错误
错误原因
该问题是Spring Boot 2.5.x版本的已知自动配置缺陷:
当项目同时引入spring-boot-starter-data-jpa和liquibase-core依赖时,两个核心Bean的初始化逻辑形成循环依赖:
- JPA的
entityManagerFactory初始化需要等待Liquibase完成数据库表结构变更,保证实体类和数据库schema匹配 - 该版本的Liquibase自动配置逻辑又会依赖
entityManagerFactory获取数据库连接相关配置,二者互相等待导致启动失败。
解决方案
按推荐优先级排序如下:
- 方案1:升级Spring Boot版本
直接将项目Spring Boot版本升级至2.6.0及以上,官方已在该版本修复了这个自动配置导致的循环依赖问题,无需额外修改其他配置。 - 方案2:调整JPA初始化顺序(适合无需升级大版本的场景)
在项目的application配置文件中添加配置,延迟JPA的初始化时机,等待Liquibase执行完成后再初始化JPA相关Bean:
yaml格式配置:
properties格式配置:spring: jpa: defer-datasource-initialization: truespring.jpa.defer-datasource-initialization=true - 方案3:临时允许循环依赖(仅应急调试使用,不推荐线上环境使用)
在配置文件中开启Spring Boot的循环依赖允许开关:
yaml格式配置:
properties格式配置:spring: main: allow-circular-references: truespring.main.allow-circular-references=true
内容的提问来源于stack exchange,提问作者user16558957
相关产品推荐
相关产品推荐

