weixin_44854681 2025-05-12 13:46 采纳率: 83.3%
浏览 75
已结题

springboot工程不能读取nacos配置中心配置

想使用nacos配置中心却读取不到配置值:
想在nacos配置中心配置文件中改变一下服务端口,却无法成功,nacos配置文件如下:

img


本地配置文件bootstrap.yml如下:

img


已经添加了相关依赖:

img


服务启动端口是8080却不是配置中心设置的63040!
求指教

  • 写回答

4条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-05-12 13:50
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    Spring Boot 无法读取 Nacos 配置中心配置问题解决方案

    根据您提供的信息,Spring Boot 应用无法从 Nacos 配置中心读取配置,特别是端口设置未生效。以下是详细分析和解决方案:

    1. 检查依赖配置

    从您提供的 pom.xml 片段看,依赖基本正确,但建议确认完整依赖:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2021.0.5.0</version> <!-- 请确认版本与Spring Boot匹配 -->
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2021.0.5.0</version> <!-- 请确认版本与Spring Boot匹配 -->
    </dependency>
    

    2. 检查 bootstrap.yml 配置

    确保您的 bootstrap.yml 配置正确(注意缩进和格式):

    spring:
      application:
        name: content-api  # 这个名称要与Nacos中的Data ID对应
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.174.131:8848
            namespace: dev
            group: xuecheng-plus-project
          config:
            server-addr: 192.168.174.131:8848
            namespace: dev
            group: xuecheng-plus-project
            file-extension: yaml
            refresh-enabled: true
      profiles:
        active: dev
    

    3. Nacos 配置检查

    根据您提供的图片,Nacos 配置应为:

    • Data ID: content-api-dev.yaml (注意格式)
    • Group: xuecheng-plus-project
    • 配置内容:
    server:
      port: 63040
      servlet:
        context-path: /content
    

    4. 常见问题排查

    1. Data ID 命名规则问题

      • 正确的 Data ID 应该是 ${spring.application.name}-${spring.profiles.active}.${file-extension}
      • 在您的情况应该是 content-api-dev.yaml
    2. 命名空间和分组匹配

      • 确保 bootstrap.yml 中的 namespace 和 group 与 Nacos 控制台中的配置完全一致
      • namespace 可以是命名空间ID或名称,但建议使用ID
    3. 配置加载顺序

      • 确保是 bootstrap.yml 而不是 application.yml
      • Spring Cloud 应用会优先加载 bootstrap 配置
    4. 日志检查

      • 启动时添加 --debug 参数查看配置加载日志
      • 检查是否有类似以下的日志:
        Loading nacos data, dataId: 'content-api-dev.yaml', group: 'xuecheng-plus-project'
        

    5. 完整解决方案步骤

    1. 确认 Nacos 服务正常运行且可访问
    2. 检查 bootstrap.yml 配置是否正确
    3. 确认 Nacos 中的 Data ID、Group 和命名空间完全匹配
    4. 在启动类上添加 @EnableDiscoveryClient 注解
    5. 尝试在 Controller 中添加测试端点验证配置是否加载:
    @RestController
    @RequestMapping("/config")
    @RefreshScope
    public class ConfigController {
        
        @Value("${server.port}")
        private String port;
        
        @GetMapping("/port")
        public String getPort() {
            return "Current port: " + port;
        }
    }
    
    1. 启动应用时添加 VM 参数 -Dspring.cloud.bootstrap.enabled=true

    如果问题仍然存在,建议检查 Nacos 服务端日志和客户端网络连接情况,确保配置能够正确推送到客户端。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月12日