SpringBoot所管理的依赖和需要的依赖冲突问题及解决
背景 用 Spring Boot 2.7.7 集成 Elasticsearch 7.9.3,启动直接报错,截图里这堆异常信息看得人头疼。 Error creating bean with name 'client' defined in class path resource [com/sgp/co
背景
用 Spring Boot 2.7.7 集成 Elasticsearch 7.9.3,启动直接报错,截图里这堆异常信息看得人头疼。

Error creating bean with name 'client' defined in class path resource
[com/sgp/config/EsConfig.class]: Bean instantiation via factory method failed; nested exception
is org.springframework.beans.BeanInstantiationException: Failed to instantiate
[org.elasticsearch.client.RestHighLevelClient]: Factory method 'client' threw exception; nested
exception is java.lang.NoClassDefFoundError:
org/elasticsearch/common/xcontent/DeprecationHandler at
org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.24.jar:5.3.24]
排查后发现,项目里除了我自己引入的 ES 7.9.3 的 jar 包,Spring Boot 2.7.7 默认还带了一份 7.13.1 版本的依赖。最初 pom.xml 是这样写的:
4.0.0 pom orders org.springframework.boot spring-boot-starter-parent 2.7.7 com.sgp es-study 0.0.1-SNAPSHOT es-study es-study 1.8 org.springframework.boot spring-boot-starter ..... org.elasticsearch.client elasticsearch-rest-high-level-client 7.9.3
解决方案
网上有些说法是,直接在 里指定版本就能覆盖 Spring Boot 管理的依赖版本。但实际试下来,这种方式在我这个项目里并没有生效。问题出在 Spring Boot 父 POM 已经通过 锁定了 ES 的版本,单纯的 声明优先级不够,最终被父 POM 的版本覆盖了。
真正的解决办法是:在 里显式声明一个版本属性,然后在 里用 ${} 引用它。这样能确保子模块的版本配置生效,覆盖掉父 POM 的默认版本。修改后的 pom 核心片段如下(先记录这个方案,后面找到根本原因再深入分析):
4.0.0 pom orders org.springframework.boot spring-boot-starter-parent 2.7.7 com.sgp es-study 0.0.1-SNAPSHOT es-study es-study 1.8 7.9.3 org.springframework.boot spring-boot-starter ..... org.elasticsearch.client elasticsearch-rest-high-level-client ${elasticsearch.version}
总结
当 Spring Boot 管理的依赖与你手动引入的版本冲突时,直接写死版本号未必有效——因为父 POM 的 优先级更高。最佳实践是在 中定义自定义版本属性,再通过 ${} 引用,这样才能稳稳覆盖。遇到类似问题不妨按这个思路排查一下。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















