欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Nacos入门过程的坑--获取不到配置的值问题

程序员文章站 2022-06-17 15:20:14
目录nacos获取不到配置的值本地nacosjava代码nacos配置文件,通过@value() 获取时失败了在nacos中配置的是这样的但是在controller中取值取不到是我的命名不规范吗?我改...

nacos获取不到配置的值

namespace设计真实一个奇特的东西。用spring-cloud-starter-alibaba-nacos-config测试的时候,java代码里设置namespace必须使用那一串类似uuid的值,直接写英文名称一直获取不到值(public namespace除外),这个问题折腾了我好几天;网上的资料要么是写的不全,要么是胡编乱造;

真不知道这种设计意欲何为

本地nacos

Nacos入门过程的坑--获取不到配置的值问题

java代码

启动类:

@springbootapplication
public class nacosmain { 
    public static void main(string[] args) {
        springapplication.run(nacosmain.class ,args);
    } 
}
 

controller类

@restcontroller
@refreshscope
public class nacoscontroller { 
 
    @value("${uu:}")
    private string name;
 
    @getmapping("/hello")
    public string info(){
        // system.out.println(name);
        return name;
    }
}
 

application.yaml

server:
  port: 10086
  servlet:
    context-path: /nacosdemo
 

bootstrap.yaml

spring:
  application:
    name: demo
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 0519e084-652c-4b86-a43c-d2de2041ff28
        group: default_group
        file-extension: yaml
 

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">
    <parent>
        <artifactid>code-demoparent</artifactid>
        <groupid>com.uu</groupid>
        <version>1.0.0</version>
    </parent>
    <modelversion>4.0.0</modelversion>
    <artifactid>nacosdemo</artifactid>
 
    <dependencies>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-web</artifactid>
        </dependency>
 
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-alibaba-nacos-config</artifactid>
        </dependency>
    </dependencies>
 
    <dependencymanagement>
        <dependencies>
            <dependency>
                <groupid>org.springframework.cloud</groupid>
                <artifactid>spring-cloud-dependencies</artifactid>
                <version>finchley.sr1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupid>org.springframework.cloud</groupid>
                <artifactid>spring-cloud-alibaba-dependencies</artifactid>
                <version>0.2.1.release</version>
                <type>pom</type>
                <scope>import</scope>
            </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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelversion>4.0.0</modelversion>
 
    <groupid>com.uu</groupid>
    <artifactid>code-demoparent</artifactid>
    <packaging>pom</packaging>
    <version>1.0.0</version>
    <modules>
        <module>nacosdemo</module>
        <module>loader</module>
        <module>nacosclient</module>
        <!--<module>attachment</module>-->
    </modules>
 
    <name>code-demoparent</name>
    <!-- fixme change it to the project's website -->
    <url>http://www.example.com</url>
 
    <properties>
        <project.build.sourceencoding>utf-8</project.build.sourceencoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
 
    <dependencies>
        <dependency>
            <groupid>junit</groupid>
            <artifactid>junit</artifactid>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies> 
 
    <dependencymanagement>
        <dependencies>
 
            <!--spring-boot-->
            <dependency>
                <groupid>org.springframework.boot</groupid>
                <artifactid>spring-boot-dependencies</artifactid>
                <version>2.3.0.release</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
 
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies
            <dependency>
                <groupid>org.springframework.cloud</groupid>
                <artifactid>spring-cloud-dependencies</artifactid>
                <version>edgware.release</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            -->
        </dependencies>
    </dependencymanagement>
</project>

nacos配置文件,通过@value() 获取时失败了

在nacos中配置的是这样的

verify:
    qr_url: xxxxxxxx

但是在controller中取值取不到

@value("verify.qr_url")
privite string url;

震惊!取不到值!

为啥呢?难道是用的nacos的原因,百度一下,还是没办法解决,那我试试拿其他配置,结果,拿到了!

那就可以断定,不是nacos的原因,那是啥原因呢

是我的命名不规范吗?我改下吧

verify-url: xxxxxx

拿到了!

ok,解决了,就是我命名不规范,说不定人家naocs不认你这个,问我为啥这么确定是nacos不认,因为我直接写在本地application.yml里是可以读取到的。

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

相关标签: Nacos 配置