一、场景复现
最近在搭建 Spring Cloud 微服务架构时,计划通过 Nacos 统一管理配置文件,于是在 application.yml 中添加了如下配置:
spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yml config: import: nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}启动服务时直接抛出异常:No spring.config.import property has been defined,明明已经配置了spring.config.import,却依然报错,排查了配置格式、Nacos 连接信息都没问题,最后定位到是依赖缺失导致的。
二、根源分析
Spring Boot 2.4.x 版本后,官方对配置加载机制进行了优化,将bootstrap.yml对应的功能从核心依赖中剥离,单独放在了spring-cloud-starter-bootstrap依赖中。而spring.config.import属性是用于加载外部配置(如 Nacos、Config Server)的关键配置,其解析依赖于 bootstrap 启动流程的支持。
如果项目中没有引入spring-cloud-starter-bootstrap依赖,Spring 容器启动时无法识别spring.config.import配置,就会抛出上述异常。
简单说:不是配置写得不对,是少了 “解析这个配置” 的依赖。
三、解决方案
在项目的 pom.xml中添加如下依赖,版本建议与 Spring Cloud 的版本保持兼容:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.7</version></dependency>然后刷新maven项目即可