一、场景复现

最近在搭建 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项目即可

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐