Issue 来源spring-cloud-alibaba#3931
影响版本spring-cloud-alibaba 2023.0.1.3+


一、问题描述

在 Spring Cloud Alibaba 2023.X 版本中,将 Nacos 配置(包括 extension-configsshared-configs 等)放在 bootstrap.yml / bootstrap.properties 中,配置中心的内容无法正常加载,但日志显示 bootstrap 文件本身已被读取。

将相同配置移到 application.yml 后,一切恢复正常。


二、根本原因

flowchart TD
    A[bootstrap.yml 被读取] --> B{SCA 版本判断}
    B -- 2023.0.1.2 及以前 --> C[✅ 正常加载 Nacos 配置中心]
    B -- 2023.0.1.3 及以后 --> D[❌ extension-configs / shared-configs 失效]
    D --> E[问题根源:SCA 2023.0.1.3 修改了配置加载优先级机制]
    E --> F[bootstrap 阶段注册的 Nacos PropertySource 被后续流程覆盖或丢弃]

简单来说:
SCA 2023.0.1.3 做了一次不向后兼容的内部变更,导致 bootstrap.yml 中的 Nacos 扩展配置在加载链路中被"丢掉",而 application.yml 中的配置走的是新路径,不受影响。


三、解决方案

✅ 方案一(推荐):迁移到 application.yml(官方推荐方式)

SCA 2023.X 已全面转向 spring.config.import 机制,不再以 bootstrap 为主要入口

# application.yml
spring:
  application:
    name: your-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: your-namespace
        group: DEFAULT_GROUP
        file-extension: yaml
        extension-configs:
          - data-id: common.yaml
            group: DEFAULT_GROUP
            refresh: true
        shared-configs:
          - data-id: shared.yaml
            group: DEFAULT_GROUP
            refresh: true
  config:
    import:
      - nacos:your-service.yaml

✅ 方案二:版本回退(临时方案)

如果项目暂时无法迁移配置文件,可回退到 2023.0.1.2

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2023.0.1.2</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

⚠️ 此方案仅作过渡,不建议长期使用旧版本。


⚠️ 无效方案(已验证)

加入 spring-cloud-starter-bootstrap 依赖不能解决此问题:

<!-- ❌ 加了也没用 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

原因:bootstrap.yml 本身 已经被读取(日志可见),问题出在 Nacos 扩展配置的后续处理阶段,而非 bootstrap 上下文未启动。


四、配置加载优先级(2023.X 新机制)

flowchart TD
    A[bootstrap.properties] --> B[配置中心 Nacos]
    B --> C[application.properties]
    C --> D[最终生效配置]

注意:在 2023.X 的新链路下,优先级从低到高为:
bootstrapNacos 配置中心application
Nacos 配置中心的值可以覆盖 bootstrap,但会被 application 中的同名配置覆盖
这与旧版本行为不同,迁移时需特别注意。


五、总结

项目 内容
影响版本 SCA 2023.0.1.3 及以上
现象 bootstrap.yml 中 Nacos 配置被读取但不生效
根因 SCA 小版本变更了配置加载机制,bootstrap 路径下的 Nacos 扩展配置被丢弃
推荐解法 全部迁移至 application.yml + spring.config.import
临时解法 回退到 2023.0.1.2
无效操作 添加 spring-cloud-starter-bootstrap 依赖