获取不到nacos配置中心的配置信息
- 自述
- 工具以及环境
- 使用的框架版本
- 出现的问题
- 我写的代码
- 夫级pom依赖
- 子级pom依赖
- bootstrap.yaml的配置
- 启动类代码
- 前端控制器代码
- 这是配置中心的配置信息
自述
小小的码农想请教一下了解微服务的资深家,能不能发现我现在的问题,想请教一下,我究竟是哪一步出现了问题。我也去nacos官网看了看,并没发相应的解决方法,害。困扰了我3天,大四的码农该何去何从
工具以及环境
mac环境
eclipse
maven 3,2,5
java 1,8,0
使用的框架版本
spring boot 2,2,7,RELEASE
spring-cloud-starter-alibaba-nacos-config 2,2,7,RELEASE
出现的问题
我通过两种方式想获取配置中心指定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;
}
}