Spring Boot读取application-test.yaml配置值错误:获0而非配置的10
问题原因及解决方案
核心问题
你在测试类里手动new了OperationProperties实例,这导致Spring容器没有参与该实例的创建和配置注入。@ConfigurationProperties注解的生效依赖Spring容器对Bean的管理,手动创建的对象不会触发配置绑定逻辑,所以dayPeriod会使用int类型的默认值0。
正确的做法
需要让Spring容器来注入OperationProperties实例,而不是手动创建,具体修改方式如下:
修改测试类代码
@ActiveProfiles("test") @SpringBootTest // 启动Spring容器,加载配置和Bean class TimeUtilsTest { @Autowired // 由Spring容器注入配置好的实例 private OperationProperties operationProperties; @Test void test(){ System.out.println(operationProperties.getDayPeriod()); // 会输出10 } }
额外说明
@SpringBootTest注解会启动完整的Spring应用上下文,确保配置类和配置文件被正确加载。@Autowired会从Spring容器中获取已经完成配置绑定的OperationProperties实例,此时dayPeriod的值会从application-test.yml中读取到10。
内容的提问来源于stack exchange,提问作者Evgenii Golgovskikh
相关产品推荐
相关产品推荐

