Nacos系列——配置的创建与获取
创始人
2024-04-26 07:11:42
0

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.引入依赖

        com.alibaba.nacosnacos-client2.1.0

完整pom


4.0.0org.springframework.bootspring-boot-starter-parent2.7.6 cn.flyNacos-easy0.0.1-SNAPSHOTNacos-easyDemo project for Spring Boot11org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-starter-webcom.alibaba.nacosnacos-client2.1.0org.projectlomboklomboktrueorg.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-maven-pluginorg.projectlomboklombok

2.设置yaml

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

  1. serverAddr:你的nacos地址
  2. dataId: 配置的Data ID
  3. group:配置的组名称,默认为DEFAULT_GROUP
  4. timeout:连接超时时间
server:port: 8889nacos: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 logMap) {final ArrayList keys = new ArrayList<>();final ArrayList 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 {@Autowiredprivate NacosBasedProperties basedProperties;@Overridepublic void getConfigurationFromNacos() throws NacosException {final HashMap 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 {@Autowiredprivate NacosBasedService basedService;@Overridepublic void run(String... args) throws Exception {basedService.getConfigurationFromNacos();}
}

结果

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

相关内容

热门资讯

同德化工陷债务漩涡!融资租赁纠... 1月15日晚间,山西民爆巨头同德化工(002360)发布公告称,近日公司及全资子公司同德科创材料有限...
迅雷起诉前CEO陈磊等人追索2... 1月15日,迅雷公司及其子公司网心科技(以下简称网心)以“损害公司利益责任纠纷”为由,对前CEO陈磊...
同德化工(002360)披露公... 截至2026年1月15日收盘,同德化工(002360)报收于5.03元,较前一交易日上涨2.24%,...
央行一揽子政策支持“十五五”开... 下调各类结构性货币政策工具利率0.25个百分点;将科技创新和技术改造再贷款额度从8000亿元增加至1...
旭杰科技:独立董事刘勇因涉嫌违... 证券之星消息,1月15日旭杰科技公开信息显示,独立董事刘勇因涉嫌违反证券法律法规,未依法履行其他职责...
助力经济结构转型优化 央行出台... 国务院新闻办公室今天下午举行新闻发布会,中国人民银行有关负责人介绍,根据当前经济金融形势需要,人民银...
500户业主十余年物业纠纷,涉... 近日,津市市人民法院调解室人声鼎沸,热气袅袅的茶香中,一份关乎近500名业主的和解协议正在被郑重签署...
严惩腐败犯罪!最高法:对于犯罪... 撰文 | 余晖 据最高法消息,1月15日上午,最高人民法院党组书记、院长张军主持召开党组会,传达学...
学习语丨更加科学有效地把权力关... 习近平总书记在二十届中央纪委五次全会上发表重要讲话强调,“党的自我革命重在治权,把权力关进制度笼子是...