美文网首页
记录配置nacos-config(随记)

记录配置nacos-config(随记)

作者: 简楼 | 来源:发表于2021-04-25 16:29 被阅读0次

    前言

    在了解网关后,知道网关需要注册中心来监控,以及需要统一的配置文件中心,进行配置文件管理;

    前提

    在搭建配置中心时,需要先下载并运行Nacos;

    搭建时请严格按照 Nacos 依赖关系构建项目,不然会有意想不到的收获,甚至自闭一段时间;
    下面时我拷贝的一份依赖关系图:


    image.png

    版本说明 · alibaba/spring-cloud-alibaba Wiki

    构建项目依赖管理

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
        <hutool.version>5.6.2</hutool.version>
        <alibaba.version>2.2.5.RELEASE</alibaba.version>
        <spring.boot.vsersion>2.3.2.RELEASE</spring.boot.vsersion>
        <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
      </properties>
    
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>${spring.boot.vsersion}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
          <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
          <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
    

    以上是搭建nacos-config配置中心需要管理的依赖;

    构建子模块

    项目关系

    image.png

    pom.xml 依赖引入

      <dependencies>
        <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>
        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
        </dependency>
      </dependencies>
    

    resource配置

    在 resource 目录下,新建 bootstrap.yml 文件,并写入配置:

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

    启动类

    @SpringBootApplication
    public class NacosConfigApplication {
    
      public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
        String useLocalCache= applicationContext.getEnvironment().getProperty("useLocalCache");
        System.err.println("useLocalCache :" + useLocalCache+ "<<<<<<");
      }
    }
    

    此处目的是,打印出 useLocalCache 配置是否从 nacos服务中的配置管理里面动态获取到了。

    构建controller 测试动态配置

    @RestController
    @RequestMapping("/config")
    @RefreshScope
    public class ConfigController {
    
      @Value("${useLocalCache:false}")
      private boolean useLocalCache;
    
      @RequestMapping("/get")
      public boolean get() {
        return useLocalCache;
      }
    }
    

    @RefreshScope 用来动态刷新配置的。

    测试步骤

    1. 写一个 yaml 配置到 nacos 服务里面

    curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache: true"
    

    2. 启动 nacos-config 项目

    GET 请求 http://localhost:8080/config/get:

    image.png

    3. 修改配置并重新查询

    修改
    image.png
    再次查询
    image.png

    总结

    至此,nacos的配置管理就完成的;

    说一下这里碰到的几个坑:

    1. 版本依赖问题:

    一开始我选择的是Spring Cloud 2020.0、Spring Cloud Alibaba 2021.1、Spring Boot 2.4.2.RELEASE,然后发现 Spring Boot 只有 2.4.2 版本,没有后缀 RELEASE,然后启动项目后,发现一直获取不到nacos上设置的值,网上百度了一堆,自己也都尝试了下,发现都不行,最后就决定给版本降级,事情就解决了,如果有知道原因的小伙伴,可以私聊告诉我,感谢!

    1. 容易混淆的文件扩展:

    bootstrap.yml的文件后缀,和 bootstrap.yml 里面配置的 file-extension: yaml,是不同的东西;
    file-extension: yaml 指的是基于 dataid 为 yaml 的文件扩展名配置方式,这个是nacos服务里面的配置,是我们动态刷新获取的配置的格式,不是我们构建的项目里的bootstrap.yml

    相关文章

      网友评论

          本文标题:记录配置nacos-config(随记)

          本文链接:https://www.haomeiwen.com/subject/ewidrltx.html