获取不到nacos配置中心的配置信息(已解决)

自述

小小的码农想请教一下了解微服务的大佬们,能不能发现我现在的问题,想请教一下,我究竟是哪一步出现了问题。我也去nacos官网看了看,并没发相应的解决方法,害。困扰了我3天,大四的码农该何去何从

工具以及环境

mac环境
1.eclipse
2.maven 3.2.5
3.java 1.8.0

使用的框架版本

1.spring boot 2.2.7.RELEASE
2.spring-cloud-starter-alibaba-nacos-config 2.2.7.RELEASE
3.nacos 1.2.1

出现的问题

我通过两种方式想获取配置中心指定dataid中的配置信息,发现并没有获取出来。

方式一

通过写了前端控制器,利用@value标签获取,发现获取到的为null值

在这里插入图片描述

方式二

我在启动类里通过ConfigurableApplicationContextgetEnvironment().getProperty(“user.name”)获取配置信息,发现获取到的居然是本地电脑的用户名,并不是配置中心的信息

在这里插入图片描述

我写的代码

夫级pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 三坐标 -->
    <groupId>com.ziqiu</groupId>
    <artifactId>springcloud-nacos-service</artifactId>
    <version>1.0</version>

    <!-- 工程名称描述 -->
    <name>springcloud-nacos-service</name>
    <description>nacos服务工程</description>

    <!-- 子模块 -->
    <modules>
        <module>springcloud-nacos-a-config</module>
    </modules>

    <!-- 打包方式 -->
    <packaging>pom</packaging>

    

    <!-- 在 properties下声明相应的版本信息,然后在dependency下引用的时候用 ${} 就可以引入该版本jar包了 -->
    <properties>
        <!-- 编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- jdk -->
        <java.version>1.8</java.version>

        <!-- SpringBoot -->
        <platform-bom.version>Cairo-SR3</platform-bom.version>

        <!-- SpringCloud -->
        <spring-cloud-dependencies.version>Finchley.RELEASE</spring-cloud-dependencies.version>
    </properties>

    <!-- 依赖 jar 包版本管理的管理器 -->
    <!-- 如果 dependencies 里的 dependency 自己没有声明 version 元素,那么 maven 就此处来找版本声明。 -->
    <!-- 如果有,就会继承它;如果没有就会报错,告诉你没有版本信息 -->
    <!-- 优先级:如果 dependencies 里的 dependency 已经声明了版本信息,就不会生效此处的版本信息了 -->
    <dependencyManagement>
      <dependencies>  
        <dependency>
    		<groupId>com.alibaba.cloud</groupId>
    		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    		<version>2.2.7.RELEASE</version>
		</dependency>
		<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    		<version>2.2.7.RELEASE</version>
		</dependency>
            
      </dependencies>
    </dependencyManagement>

</project>

子级pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.siyiface.hello</groupId>
    <artifactId>springcloud-nacos-config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-nacos-config</name>
    <description>nacos-provider</description>

	<parent>
        <groupId>com.ziqiu</groupId>
        <artifactId>springcloud-nacos-service</artifactId>
        <version>1.0</version>
    </parent>
    
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <!-- <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency> -->

     	<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->
		<dependency>
    		<groupId>com.alibaba.cloud</groupId>
    		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		</dependency>
		<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		
    </dependencies>


    

</project>

bootstrap.yaml的配置

1.因为我使用的是yaml格式,我也在配置文件中声明了

server:
  port: 8080
spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml

启动类代码

package com.siyiface.ceshi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class SpringcloudNacosConfigApplication {

    public static void main(String[] args) {
    	ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringcloudNacosConfigApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("useLocalCache");
        System.err.println("user name :"+userName+"; age: "+userAge);
    }

}

前端控制器代码

package com.siyiface.ceshi;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.nacos.api.config.annotation.NacosValue;

@RestController
@RequestMapping("/config")
@RefreshScope
public class controler {

    @Value("${server.port}")
    private String port;
    
    @Value("${user.name:}")
    private String name;
    
    @NacosValue(value="${useLocalCache:}",autoRefreshed=true)
    private String useLocalCachename;
    
    @RequestMapping("/get")
    public String get() {
    	return port +" "+ name +" "+ useLocalCachename;
//        return useLocalCache;
    }
}

这是配置中心的配置信息

在这里插入图片描述

问题所在

感谢

首先感谢在提问区遇到一位大哥,连续两天帮助我解决问题,不求回报的精神,手把手的讲解使我受益两朵。在解决问题的当天,我决定把遇到的问题分享给大家。希望大家不要遇到和我一样的坑,绕过这个坑。

问题关键

还记得前面我写的pom依赖吗,我之前用的nacos版本是1.2-1和spring boot版本是2-2.7

<dependencyManagement>
      <dependencies>  
        <dependency>
    		<groupId>com.alibaba.cloud</groupId>
    		<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    		<version>2.2.7.RELEASE</version>
		</dependency>
		<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    		<version>2.2.7.RELEASE</version>
		</dependency>
            
      </dependencies>
    </dependencyManagement>

老大哥和我说我的版本不对称,导致了spring获取不到nacos配置服务的信息。我还特地的去看了一下nacos的配置文件,发现正如老大哥所说,显示的请求返回为null。

解决方法

我使用了nacos 1.4.2版本的,和配置依赖版本为2.2.0.RELEASE和如下的spring boot版本,成功解决问题。

<dependencyManagement>
      <dependencies>
          <dependency>
              <groupId>com.alibaba.cloud</groupId>
              <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
              <version>2.2.0.RELEASE</version>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
              <version>2.0.7.RELEASE</version>
          </dependency>
      </dependencies>
    </dependencyManagement>

感悟

首先,遇到问题,一定要学会看日志。从日志中寻找问题,并多去github对应的社区逛逛,看看有没有人遇到相同的问题,其次在弄java项目要时刻注意版本问题(特别是官网特意强调的)

笑话

偷偷告诉你们…大哥从github上拿下来的代码改下ip就能用,然而我死活都报错!!!!。

特别提示

nacos 2.X.X版本一定要注意!!!!!!!!本地的数据库要开启,还有nacos配置文件中的数据库账号密码一定要正确!!!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值