如何解决无法获取到Nacos配置中心的配置问题

 更新时间:2025年06月07日 08:43:46   作者:lukamao  
这篇文章主要介绍了如何解决无法获取到Nacos配置中心的配置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

引言

最近在学习 Spring Cloud Alibaba,用到了 Nacos 配置中心。

Nacos 是 Spring Cloud Alibaba 中的一个组件,通常用作服务注册中心以及配置中心。

问题复现

项目中有一个如图所示的消息模块:

在 application.yml 中做了如下配置:

spring:
  application:
    name: message
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
        group: DEFAULT_GROUP

主要配置了服务的名称、Nacos 注册中心的地址、配置文件的后缀名以及组的名称,我在 Nacos 注册中心上做了如下配置:

Nacos 默认会在启动的时候去配置中心上读取名为

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension} 

的配置文件,但是在启动的时候报了如下的错误:

意思是 Spring Boot 项目启动失败,url 属性未指定,DataSource 创建失败。

这里有一个小插曲:在高版本的 Spring Boot 中,默认是要创建 DataSource 的,否则无法启动,我们可以在 Spring Boot 的主启动类的 @SpringBootApplication 上加一个参数,排除掉 DataSourceAutoConfiguration,如下所示:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}

但是,在这个服务中,我们是需要配置数据源,并且已经配置了数据源的,为什么会启动失败呢?

问题排查

关于排查问题,我们首先要做的就是看日志,先看控制台输出:

我们发现程序首先会去配置中心上加载名为 message 和 message.properties 的配置文件,读到这里大家会不会有点奇怪,我们配置的后缀名明明是 yaml,为什么会去读 message.properties 呢?带着这个疑问,请继续往下读。

如果让我去设计一个注册中心的话,在程序启动的时候,我会首先解析出配置文件,找到注册中心的地址,恰恰 Nacos 也是这样做的。如果你有一定的源码阅读功底的话,你应该会很快的找到 Nacos 里面的 NacosPropertySourceBuilder 类,里面有个 build 方法。没错,这个类就是用来解析配置文件,构造 NacosPropertySource 对象的,我们在这个方法的第一行上打上断点,以 Debug 模式运行,发现这个断点一共运行了两次,两次的对象的值如下:

我们发现,这与日志里的值一样,并且并没有解析我们的配置文件,采用的是默认的配置,为什么会这样呢?

问题解决

我们把配置文件名改为 bootstrap.yml,再次运行。

我们可以看到项目正常启动了!

总结

这是一个非常细节的问题,我原先以为我们把 Nacos 的配置信息写在默认的 application.yml 文件中就可以加载,但是事实并非如此,Nacos 的配置信息必须写在 bootstrap.properties 或者 bootstrap.yml 文件中,以后要多加注意!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用Java设置Word文本框中的文字旋转方向的实现方法

    利用Java设置Word文本框中的文字旋转方向的实现方法

    Word文档中可添加文本框,并设置文本框为横向文本排列或是纵向文本排列,或者设置文本框中的文字旋转方向等.通过Java程序代码,也可以实现以上文本框的操作.下面以Java代码示例展示具体的实现步骤.另外,可参考C#及VB.NET代码的实现方法,需要的朋友可以参考下
    2021-06-06
  • MyBatis CRUD 常用动态 SQL 标签整理

    MyBatis CRUD 常用动态 SQL 标签整理

    本文介绍了MyBatis中常用的动态SQL标签及其用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02
  • MyBatis实战之动态生成SQL详解

    MyBatis实战之动态生成SQL详解

    这篇文章主要为大家详细介绍了如何使用MyBatis实现动态生成SQL,可以告别硬编码,拥抱智能SQL生成,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • Java超详细讲解SpringMVC如何获取请求数据

    Java超详细讲解SpringMVC如何获取请求数据

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Spring MVC 角色划分清晰,分工明细,本章来讲解SpringMVC如何获取请求数据
    2022-04-04
  • ssm开发使用redis作为缓存的使用步骤

    ssm开发使用redis作为缓存的使用步骤

    在开发中经常遇到大量的重复的,高并发的查询,此时可以使用redis缓存。这篇文章主要介绍了ssm开发使用redis作为缓存的使用步骤,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 解读Jvm的内存结构与GC及jvm参数调优

    解读Jvm的内存结构与GC及jvm参数调优

    这篇文章主要介绍了解读Jvm的内存结构与GC及jvm参数调优方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表功能

    Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表功能

    这篇文章主要介绍了Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java实现对PowerPoint幻灯片的添加、隐藏和删除操作

    Java实现对PowerPoint幻灯片的添加、隐藏和删除操作

    在日常开发工作中,我们经常会遇到需要自动化处理文档的场景,尤其是PowerPoint演示文稿,如何利用Java的强大能力,实现对PowerPoint幻灯片的添加、隐藏和删除,从而极大地提高工作效率,成为了许多开发者关注的焦点,本文将深入探讨这一需求,需要的朋友可以参考下
    2026-01-01
  • Java源码解析TreeMap简介

    Java源码解析TreeMap简介

    今天小编就为大家分享一篇关于Java源码解析TreeMap简介,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Spring中bean对象的装配方式、作用域及生命周期详解

    Spring中bean对象的装配方式、作用域及生命周期详解

    这篇文章主要介绍了Spring中bean对象的装配方式、作用域及生命周期详解,SprignBoot中 @Bean 完美的替换了了上面的这种在xml中配置的方法,使用以下方法就能让spring在需要自动创建Info对象时,自动调用这个方法,需要的朋友可以参考下
    2023-11-11

最新评论