Nacos系列——配置的创建与获取

news2024/11/15 8:13:26

Nacos系列——配置的创建与获取

  • 配置的创建与获取
    • 本文资源
    • 官方文档
    • 创建配置
    • 获取Nacos配置
      • 程序目录
      • 1.引入依赖
        • 完整pom
      • 2.设置yaml
      • 3.配置读取类NacosBasedProperties
      • 4.构建日志打印工具LoggerUtil
      • 5.构建Nacos基础服务类
        • 实现
      • 6.构建自动化任务
        • 实现
      • 结果

配置的创建与获取

本文资源

https://gitee.com/giteeforsyf/spring-cloud-formatter
选择下载:Nacos-easy
在这里插入图片描述

官方文档

https://nacos.io/zh-cn/docs/v2/guide/user/sdk.html

创建配置

  1. 点击配置管理
  2. 点击配置列表
  3. 选择右侧加号
  4. 设置配置的Data ID
  5. 设置配置的分组(默认为DEFAULT_GROUP)
  6. 设置配置内容(内容要匹配配置格式)
  7. 保存即可
    在这里插入图片描述
    如下我创建了test01配置
    在这里插入图片描述
    发布后入如下:
    在这里插入图片描述

获取Nacos配置

这里仅需要一个简单的SpringBoot工程即可,如果您下载了对应的资源,那么仅需要查看资源内部README文档进行对应修改即可,下面我们将从0构建Nacos-easy

程序目录

在这里插入图片描述

1.引入依赖

        <!--        引入依赖-->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.1.0</version>
        </dependency>

完整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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>cn.fly</groupId>
    <artifactId>Nacos-easy</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Nacos-easy</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        引入依赖-->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2.设置yaml

在这里插入图片描述
其中:

  1. serverAddr:你的nacos地址
  2. dataId: 配置的Data ID
  3. group:配置的组名称,默认为DEFAULT_GROUP
  4. timeout:连接超时时间
server:
  port: 8889

nacos:
  conf:
    # 配置Nacos的地址
    serverAddr: 192.168.31.149:8848
    # 配置 ID,采用类似 package.class(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,
    # class 部分建议是配置的业务含义。全部字符小写。只允许英文字符和 4 种特殊字符("."":""-""_"),不超过 256 字节
    dataId: test01
    # 配置分组,建议填写产品名:模块名(Nacos:Test)保证唯一性,默认:DEFAULT_GROUP
    # 只允许英文字符和4种特殊字符("."":""-""_"),不超过128字节。
    group: DEFAULT_GROUP
    # 读取配置超时时间,单位 ms,推荐值 3000。
    timeout: 3000

3.配置读取类NacosBasedProperties

package cn.fly.nacoseasy.properties;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author Syf200208161018
 * @date 2022/12/18 15:56
 * @ClassName:NacosBasedProperties
 * @Effect:NacosBasedProperties is used for 获取yaml中的配置参数
 */
@ConfigurationProperties("nacos.conf")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class NacosBasedProperties {

    private String serverAddr;
    private String dataId;
    private String group;
    private Long timeout;
}

4.构建日志打印工具LoggerUtil

package cn.fly.nacoseasy.utils;

import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.Map;

/**
 * @author Syf200208161018
 * @date 2022/12/18 16:04
 * @ClassName:LoggerUtil
 * @Effect:LoggerUtil is used for
 */
@Slf4j
public class LoggerUtil {

    /**
     * 格式化日志打印,建议将logMap的第一个键值对设置为主题
     */
    public static void formatLog(Map<String, String> logMap) {

        final ArrayList<String> keys = new ArrayList<>();
        final ArrayList<String> values = new ArrayList<>();
        //遍历
        logMap.forEach((x, y) -> {
            keys.add(x);
            values.add(y);
        });
        int len = keys.size();
        if (len == 0) {
            log.warn("请设置日志打印内容");
        } else if (len == 1) {
            log.info("{}:{}", keys.get(0), values.get(0));
        } else {
            log.info("=============" + keys.get(0) + ":" + values.get(0) + "================");

            for (int flag = 1; flag < len; flag++) {
                log.info("{}:{}", keys.get(flag), values.get(flag));
            }

            log.info("=============" + keys.get(0) + ":" + values.get(0) + "================");
        }
    }
}

5.构建Nacos基础服务类

package cn.fly.nacoseasy.service;

import com.alibaba.nacos.api.exception.NacosException;

/**
 * @author Syf200208161018
 * @date 2022/12/18 15:48
 * @ClassName:NacosService
 * @Effect:NacosService is used for
 */
public interface NacosBasedService {

    /**
     * 拉群Nacos中的配置
     */
    void getConfigurationFromNacos() throws NacosException;
}

实现

package cn.fly.nacoseasy.service.impl;

import cn.fly.nacoseasy.properties.NacosBasedProperties;
import cn.fly.nacoseasy.service.NacosBasedService;
import cn.fly.nacoseasy.utils.LoggerUtil;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Properties;

/**
 * @author Syf200208161018
 * @date 2022/12/18 15:48
 * @ClassName:NacosBasedServiceImpl
 * @Effect:NacosBasedServiceImpl is used for 各类Nacos基础服务
 */
@Service
@EnableConfigurationProperties(NacosBasedProperties.class)
public class NacosBasedServiceImpl implements NacosBasedService {

    @Autowired
    private NacosBasedProperties basedProperties;

    @Override
    public void getConfigurationFromNacos() throws NacosException {
        final HashMap<String, String> data = new HashMap<>();
        Properties properties = new Properties();
        properties.put("serverAddr", basedProperties.getServerAddr());
        ConfigService configService = NacosFactory.createConfigService(properties);
        String content = configService.getConfig(basedProperties.getDataId(), basedProperties.getGroup(), basedProperties.getTimeout());
        data.put("Nacos配置", "");
        data.put("配置内容", content);
        LoggerUtil.formatLog(data);
    }
}

6.构建自动化任务

package cn.fly.nacoseasy.service;

import org.springframework.boot.CommandLineRunner;

/**
 * @author Syf200208161018
 * @date 2022/12/18 15:44
 * @ClassName:AutoService
 * @Effect:AutoService is used for
 */
public interface AutoService extends CommandLineRunner {
}

实现

package cn.fly.nacoseasy.service.impl;

import cn.fly.nacoseasy.service.AutoService;
import cn.fly.nacoseasy.service.NacosBasedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;

/**
 * @author Syf200208161018
 * @date 2022/12/18 15:44
 * @ClassName:AutoServiceImpl
 * @Effect:AutoServiceImpl is used for
 */
@Service
@Order(1)
public class AutoServiceImpl implements AutoService {
    @Autowired
    private NacosBasedService basedService;

    @Override
    public void run(String... args) throws Exception {
        basedService.getConfigurationFromNacos();
    }
}

结果

在这里插入图片描述
如果我们增加新的配置只需要在yaml中进行修改即可,输出就会改变了
如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非零基础自学Golang 第11章 文件操作 11.3 处理JSON文件 11.3.1 编码JSON

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.3 处理JSON文件11.3.1 编码JSON第11章 文件操作 11.3 处理JSON文件 JSON&#xff08;JavaScript Object Notation&#xff0c;JS对象简谱&#xff09;是一种轻量级的数据交换格式。 JSON最初是属于JavaScri…

C++基础学习笔记(二)——基础入门PART2

一、数组 一个集合中&#xff0c;里面存放了相同类型的数据元素 特点1&#xff1a;数组中的每个数据元素都是相同的数据类型 特点2&#xff1a;数组是由连续的内存位置组成的 1.1 一维数组 一维数组定义的三种方式&#xff1a; 数据类型 数组名[ 数组长度 ];数据类型 数组…

高通平台开发系列讲解(充电篇)充电底层驱动 power_supply 子系统

文章目录 一、Power Supply组成二、power_supply结构体说明三、驱动接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 电池驱动采取的是 linux 内核驱动中的power_supply子系统框架进行上报电池状态。 一、Power Supply组成 power supply framework在kernel/driver…

微服务真的是万能解药吗?

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store DevWeekly收集整理每周优质开发者内容&#xff0c;包括开源项目、资源工具、技术文章等方面。 每周五定期发布&#xff0c;同步更新到 知乎&#xff1a;Jackpop。 欢迎大家投稿&#xff0c;提交issu…

Spring MVC学习 | 拦截器异常处理器

文章目录一、拦截器1.1 简介1.2 拦截器的使用1.2.1 创建1.2.2 配置1.2.3 测试1.3 多个拦截器的执行顺序1.3.1 preHandle()方法返回true1.3.2 preHandle()方法返回false二、异常处理器2.1 简介2.2 配置2.2.1 springmvc.xml中配置2.2.2 注解配置学习视频&#x1f3a5;&#xff1a…

编码与解码总结

标准ASC||字符集&#xff1a; ASC||&#xff1a;美国信息交换标准代码&#xff0c;包括了英文、数字等标准ASC||使用一个字节存储一个字符&#xff0c;首位是0&#xff0c;总供可以表示128个字符 GBK&#xff08;汉字内码扩展规范&#xff0c;国标&#xff09; 汉字编码字符集…

Apache Shiro,这一篇就够了

Apache Shiro&#xff0c;这一篇就够了1.Shiro实现登录拦截2.登录认证操作3.Shiro整合Mybatis4.用户授权操作5.Shiro授权6.Shiro整合Thymeleaf1.Shiro实现登录拦截 前期环境准备 准备添加Shiro的内置过滤器&#xff1a; Bean public ShiroFilterFactoryBean shiroFilterFact…

《美国职业橄榄球大联盟》:NFL·橄榄1号位

基本装备 NFL橄榄球是一项过程极为激烈的比赛&#xff0c;阻挡、拦截与冲撞都是比赛不可或缺的一部分&#xff0c;这也可以说是橄榄球的一大特色。为了保护球员的安全&#xff0c;避免因为球员受伤而耽误球赛&#xff0c; NFL与NCAA都要求所有球员必须“穿戴合适且合法的护具”…

IfcOpenShell正确设置几何体的坐标

在之前的文章中&#xff0c;我们使用 IfcOpenShell (IOS) 读取 ifc 几何并将其转换为 brep。 当我们读取 wikilab.ifc文件时&#xff0c;一切似乎都是正确的&#xff0c;但真的如此吗&#xff1f; 当你在项目中使用 BIM 时&#xff0c;坐标始终是正确讨论的主题。 就此而言&am…

Android开发如何使用Docker为Jenkins持续集成助力

Android开发如何使用Docker为持续集成助力 为什么使用Docker 我为啥要使用到Docker呢&#xff1f;其实也是被动的&#xff0c;因为公司的项目托管在Coding上面&#xff0c;然后Jenkins集成也用的是Coding的&#xff0c;Coding默认提供了Android-29&#xff0c;JDK-8的构建环境…

【JAVA进阶】多态,内部类

&#x1f4c3;个人主页&#xff1a;个人主页 &#x1f525;系列专栏&#xff1a;JAVASE基础 目录 一、多态 1.多态的概述 2.多态的优势 3.类型转换问题 二、内部类 1.内部类概述[了解] 2.静态内部类[了解] 3.成员内部类[了解] 4.匿名内部类概述[重点] 一、多态 1.多态…

树状数组经典例题

目录 1.数星星 2.小朋友排队 3.求逆序对 1.数星星 题目描述 天空中有一些星星,这些星星都是在不同的位置,每个星星都有一个坐标。 如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的。 例如,上图中星星5是3级的(1,2,4在它的左下),星星2,4是1级的。…

idea中推送本地仓库和远程仓库后代码回退

本地仓库代码提交后回退 提交到本地仓库后 点击提交后会保存在本地仓库 本地仓库的回撤 找到git的提交记录 右键选择撤销还原 撤销还原后会出现提交文件&#xff0c;成功将本地仓库的文件移除&#xff0c;但是本地的错误代码仍然存在 如果想撤销提交到本地仓库的错误文…

SOLID 设计原则 - 这篇最容易消化

面向对象设计原则 SOLID 应该是职业程序员必须掌握的基本原则&#xff0c;每个程序员都应该了然于胸&#xff0c;遵守这 5 个原则可以帮助我们写出易维护、易拓展的高内聚低耦合的代码。 它是由罗伯特C马丁(知名的 Rob 大叔)21世纪初期 (准确来说&#xff0c;2000年在他的论文…

DevOps实战系列【第十章】:详解Jenkins Pipeline基本概念和语法

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 流水线基本概念 官方中文手册&#xff1a; https://www.jenkins.io/zh/doc/book/pipeline 我们最好在结合英文文档去看&#xff0c;因为翻译过来的中文比较乱。 Jenkins pipeline是一套插件&…

MySQL 日志,难怪被模仿

一.前言 日志是mysql数据库的重要组成部分&#xff0c;记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。 通过分析日志&#xff0c;我们可以优化数据库性能&#xff0c;排除故障&#xff0c;甚至能够还原数…

中文文献检索网站

1. 中国知网 网址&#xff1a; https://www.cnki.net/ 中国知网被称众多科研人称国内文献论文最全最权威的中文文献库&#xff0c;知网提供中国学术文献、外文文献、学位论文、报纸、会议、年鉴、工具书等各类资源统一检索、统一导航、在线阅读和下载服务。 2. 掌桥科研 网址…

25.Django大型电商项目之地址管理——如何使用三级联动菜单数据加载地址、保存数据、动态获取数据、设置默认值

1. 地址管理基本页面 1.1 概述 1.2 流程 修改templates的跳转链接center.html <ul><li><a href"/userapp/address/">地址管理</a></li> </ul>templates {% extends base.html %} {% block title %}用户中心{% endblock %} {…

东北大学数据结构第八周(排序)

7-1 快速排序 作者 朱允刚 单位 吉林大学 给定包含n个元素的整型数组a[1],a[2],…,a[n]&#xff0c;利用快速排序算法对其进行递增排序&#xff0c;请输出排序过程&#xff0c;即每次Partition之后的数组。每次选择所处理的子数组的第一个元素作为基准元素。 输入格式: 输入为…

MapReduce 序列化案例

文章目录MapReduce 序列化案例一、案例需求二、案例分析map 阶段Reduce 阶段三、代码实现1、编写流量统计的Bean对象2、Mapper阶段代码MapReduce 序列化案例 一、案例需求 1、需求&#xff1a; 统计每一个手机号耗费的总上行流量&#xff0c;下行流量&#xff0c;总流量 2、输…