Spring Boot中additional-location无法加载YAML格式配置文件问题
问题解决方法
原因分析
Spring Boot 2.7.x中,spring.config.additional-location的设计初衷是添加配置目录,而非直接导入单个配置文件。当用它指定带通配符的YAML文件时,框架对YAML嵌套结构的解析存在兼容问题,会默认按properties格式处理配置,因此扁平的key.value写法生效,而嵌套的YAML结构无法被正确识别。
解决方案
方案1:改用官方推荐的spring.config.import配置(优先选择)
修改application-dev.yml中的配置,替换为:
spring: config: import: classpath:teacher-${env}.yml
配置后,框架会正确解析teacher-dev.yml中的嵌套YAML结构,@Value("${teacher.name}")可正常取值。
如果需要匹配多个符合*-{env}.yml格式的文件,可使用通配符:
spring: config: import: classpath:*-${env}.yml
方案2:保留additional-location的调整写法
若坚持使用additional-location,需将配置指向文件所在目录,而非直接指定文件名:
spring: config: additional-location: classpath:/
同时确保目录下的teacher-dev.yml文件名符合Spring Boot配置文件加载规则(会自动识别*-dev.yml这类带环境后缀的文件),即可正确解析嵌套YAML结构。
内容的提问来源于stack exchange,提问作者EthanAlef
相关产品推荐
相关产品推荐

