• Springboot2.x 使用 nacos 实现配置管理


    参考

    环境

    环境 版本 操作
    windows 10
    JDK 11
    Springboot 2.3.7.RELEASE
    nacos-config-spring-boot-starter 0.2.1
    nacos 0.2.1 下载

    介绍

    nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

    本文主要使用的是单机版本下的nacos的配置管理,通过命名空间groupIddataId标识区分实现多配置文件/多租户/多环境使用同一个nacos管理后台。比如日常开发分为 devtestprop 三种步骤,通过设置对应命名空间就可以在单nacos后台管理不同环境下的配置。

    nacos 的下载与启动

    1. 前往git主页下载 nacos https://github.com/alibaba/nacos
      image

    2. 下载之后解压,cmd 进入目录 nacos-server-2.1.1\nacos\bin 执行命令启动。

    注意事项:

    1. nacos 默认集群模式启动,所以会启动失败,通过指定单机模式来启动。
    2. JAVA_HOME 系统变量如果没设置的话也会报错,需要设置好系统变量。
    startup.cmd -m standalone
    
    1. 命令行显示下图输出即表示启动成功
      image

    2. 访问本地 http://localhost:8848/nacos/#/login 显示登陆界面,默认账号 nacos 密码 nacos
      image

    nacos 配置 与 Spring boot 的配置

    1. 在 nacos 中添加命名空间 xiaqiuchu
      image

    image

    image

    1. 在 nacos 配置管理->配置列表->xiaqiuchu 命名空间添加 dataId 为 xiaqiuchu 的配置,配置完毕后点击发布即可。
      image

    image

    1. pom.xml 中添加 nacos 依赖项,版本要与下载的 nacos 版本一致
            <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>nacos-config-spring-boot-starter</artifactId>
                <version>0.2.1</version>
            </dependency>
    
    1. 启动类追加注解 @NacosPropertySource 或 @NacosPropertySources 注解实现绑定
    // groupId 如果是 DEFAULT_GROUP 可以不填,因为默认值就是这个
    // 指定单个 dataId
    // @NacosPropertySource(dataId = "xiaqiuchu", groupId = "DEFAULT_GROUP", autoRefreshed = true)
    // 指定多个 dataId
    @NacosPropertySources({
            @NacosPropertySource(dataId = "xiaqiuchu", groupId = "DEFAULT_GROUP", autoRefreshed = true),
            @NacosPropertySource(dataId = "example", groupId = "DEFAULT_GROUP", autoRefreshed = true)})
    @SpringBootApplication
    public class NacosDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosDemoApplication.class, args);
        }
    
    }
    
    1. 添加测试控制器,实现 value 获取
    package com.xiaqiuchu.nacosdemo.controller;
    
    import com.alibaba.nacos.api.config.annotation.NacosValue;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author xiaqiuchu
     * @date 2022/9/3
     */
    @RestController
    public class IndexController {
        @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
        private boolean useLocalCache;
    
        @GetMapping
        public boolean index(){
            return useLocalCache;
        }
    }
    
    
    1. 在配置文件 application.properties 中指定 命名空间ID 与 nacos 的IP与端口。(命名空间ID不是命名空间名称,不要弄混)
    # 单机模式下 nacos IP与端口
    nacos.config.server-addr=127.0.0.1:8848
    # 指定命名空间,默认public
    nacos.config.namespace=dfe52df1-eabc-4601-b985-4b8b72d14e13
    

    测试

    1. 访问 http://localhost:8080/ 访问响应结果为 true ,说明配置生效
      image

    2. nacos 管理界面将配置修改为 useLocalCache=false 并再次访问,配置自动刷新成功
      image

    image

    image

    image

  • 相关阅读:
    Oneops运维系统
    采集日志工具fluentbit输出到kafka
    logstash
    Redux学习笔记
    部分浏览器不支持 replaceAll的解决
    windows10系统文件浏览器不显示图片缩略图
    C#项目版本号自定义位置自动向上增加小工具设计与实现
    父类和子类同名的变量和方法决定于哪个
    JdbcTemplate基本使用 增删该差API
    Tomcat结合Web Maven
  • 原文地址:https://www.cnblogs.com/xiaqiuchu/p/16653646.html
Copyright © 2020-2023  润新知