You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

排除snakeyaml后Spring Boot测试加载ApplicationContext失败怎么解决?

问题原因

你排除了snakeyaml依赖,但Spring Boot加载application.yml配置文件必须依赖这个库解析YAML格式,所以测试启动时加载配置文件失败,抛出找不到snakeyaml的异常。

解决方法

根据你的需求,有三种可行方案:

方案1:升级snakeyaml到安全版本(推荐)

既然是因为漏洞要处理,最优解不是排除,而是直接升级到修复漏洞的版本,Spring Boot会自动适配。在pom.xml中添加指定版本的snakeyaml依赖,覆盖默认版本:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <!-- 选择修复了漏洞的版本,比如1.30及以上,适配Spring Boot 2.5.13 -->
    <version>1.30</version>
</dependency>

同时移除spring-boot-starter-web中的exclusions配置,这样既修复了漏洞,又不影响YAML配置文件的加载。

方案2:将YAML配置文件改为properties格式

如果不需要YAML格式,把application.yml重命名为application.properties,并调整配置格式为properties语法,这样就不需要snakeyaml依赖,测试和应用都能正常启动。

比如原来的YAML配置:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/testdb

改成properties:

spring.data.mongodb.uri=mongodb://localhost:27017/testdb

方案3:测试环境单独引入snakeyaml依赖

如果生产环境确实不需要snakeyaml,只想在测试时临时引入,添加test scope的依赖:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.30</version>
    <scope>test</scope>
</dependency>

这样生产打包时不会包含该依赖,测试时能正常加载YAML配置文件。

内容的提问来源于stack exchange,提问作者Koushik J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:15:42