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

Spring Boot引入dev配置文件后构建阶段测试执行时出现属性解析失败问题

Spring Boot引入dev配置文件后构建阶段测试执行时出现属性解析失败问题

嘿,我来帮你捋捋这个问题!核心原因其实很直白:你把默认的application.yml改成application-dev.yml后,测试阶段的Spring上下文并没有自动激活dev这个环境配置,导致根本没加载到application-dev.yml里的属性,自然就找不到${sftp.host}这些配置项了。

给你几个具体的解决步骤:

1. 给测试类明确激活dev环境配置

在你的测试类上加上@ActiveProfiles("dev")注解,这样测试运行时Spring就会自动加载application-dev.yml的配置了,示例代码如下:

@SpringBootTest
@ActiveProfiles("dev")
class DataMarshallerServiceTest {
    @Autowired
    private DataMarshallerService cut;
    // 你的其他测试代码
}

2. 确保Maven打包时正确关联Spring环境配置

你用的mvn clean package -P dcr里的dcr是Maven的profile,和Spring的dev环境配置不是一回事哦。如果想在打包时让Spring自动激活dev环境,要么在命令行直接指定Spring的环境参数:

mvn clean package -P dcr -Dspring.profiles.active=dev

要么可以在pom.xml的dcr profile配置里,添加Spring环境的激活参数,这样执行-P dcr时就会自动激活Spring的dev环境。

3. 关于自定义YamlPropertySourceFactory的小检查

你的主类用了自定义的YamlPropertySourceFactory加载feeds-config.yml,这个是没问题的——它加载的是固定配置文件,和环境配置无关。只要feeds-config.yml里没有依赖sftp相关的属性,就不会影响当前问题,不用额外调整。

额外小建议

如果想更稳妥,你可以保留一个基础的application.yml,里面放一些通用的默认配置,然后application-dev.yml里只放dev环境特有的配置。这样即使哪天忘记激活环境配置,也有基础配置兜底,避免类似的属性解析错误。

备注:内容来源于stack exchange,提问作者Simeon Leyzerzon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:52:59