解决:Nacos无法获取远程配置数据,导致项目启动各种配置异常

一·问题描述:

1.项目pom依赖版本:

在这里插入图片描述

2.bootstrap.yml配置信息

在这里插入图片描述

3.远程配置:默认public命名空间

在这里插入图片描述

4.启动报异常,显示没有配置数据源,实际远程已经配置了,也就是说没有成功拉取到远程配置数据

在这里插入图片描述

二·问题原因:

1.远程配置文件的DataId没有加yaml后缀名,导致项目获取远程配置数据失败,从而引发项目启动异常

三·解决方案:

1.注意SpringCloud、SpringCloudAlibaba、SpringBoot、Nacos的组件版本匹配

1-1 推荐两套版本组合依赖:

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
    <!--    第一套版本组合-->
    <!--        <spring.boot.version>3.0.2</spring.boot.version>-->
    <!--        <spring.cloud.version>2022.0.0</spring.cloud.version>-->
    <!--        <spring.cloud.alibaba.version>2022.0.0.0-RC2</spring.cloud.alibaba.version>-->

    <!--    第二套版本组合-->
    <spring.boot.version>3.3.0</spring.boot.version>
    <spring.cloud.version>2023.0.2</spring.cloud.version>
    <spring.cloud.alibaba.version>2023.0.1.0</spring.cloud.alibaba.version>
</properties>

<dependencyManagement>
<dependencies>
    <!--springboot 依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!--springcloud 依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring.cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <!--springcloud alibaba 依赖-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring.cloud.alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>
</dependencyManagement>

1-2 SpringCloudAlibaba与各种组件版本匹配图

在这里插入图片描述

1-3 SpringCloud与SpringBoot版本匹配图

在这里插入图片描述

2.本地bootstrap.yml配置规范-示例:

server:
  port: 9004
spring:
  application:
    name: cloud-nacos-config-consumer-9004
  profiles:
    #激活dev环境配置
    active: dev
  #Springcloud配置
  cloud:
    #nacos配置
    nacos:
      #配置中心配置
      config:
        #nacos配置中心地址:跟注册地址一样,会自动从远程拉取配置文件应用
        server-addr: 127.0.0.1:8848
        #配置文件后缀格式
        file-extension: yaml
#        namespace: Dev-NameSpace
#        group: DEFAULT_GROUP
#        username: nacos
#        password: nacos
      #服务注册配置
      discovery:
        # nacos服务注册中心地址:本应用将会注册在下面这个地址服务上面,nacos本身也是一个单独的服务应用
        server-addr: 127.0.0.1:8848
#        namespace: Dev-NameSpace
#        group: DEFAULT_GROUP

3.远程配置文件取名要规范:

nacos会自动根据规则从远程配置中心拉取数据:命名空间-分组-DataId,然后再与本地application配置文件整合,从而形成最终配置数据(远程配置 > 本地配置

3-1 Data ID拼接格式:${prefix} - ${spring.profiles.active} . ${file-extension},

  • prefix:默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置

  • spring.profiles.active:取 spring.profiles.active 的值,即为当前环境对应的 profile

  • file-extension:为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension 来配置

3-2 Group:

Group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 来配置,当配置项太多或者有重名时,可以通过分组来方便管理

3-3 NameSpace(命名空间):

NameSpace 默认为 public,可以通过 spring.cloud.nacos.config.namespace 来配置,当配置项太多或者有重名时,可以通过命名空间来方便管理

3-4 远程配置文件DataId必须加上yaml后缀名:否则会出现获取不到远程配置异常

在这里插入图片描述

4.项目启动类配置nacos服务注册发现注解:

在这里插入图片描述

四·验证:启动服务成功!在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48033662/article/details/140659504