nacos集成springcloud实现配置中心功能

news2024/11/24 4:05:45

1. 在nacos控制台创建namespace

在这里插入图片描述

2. 创建SpringCloud项目

大家注意springboot和springcloud的版本对应,可以去官网查看。

https://spring.io/projects/spring-cloud#learn在这里插入图片描述

<properties>
        <java.version>11</java.version>
        <poi.version>5.2.3</poi.version>
        <easyexcel.version>3.2.1</easyexcel.version>
        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
        <hutool.version>5.8.15</hutool.version>
        <flowable.version>6.8.0</flowable.version>
        <poi.version>5.2.3</poi.version>
        <easyexcel.version>3.2.1</easyexcel.version>
        <spring-cloud.version>2021.0.7</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3. 整合nacos依赖

   <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.1</version>
        </dependency>
        <!-- 启动获取配置中心配置 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

4. nacos 配置

在nacos控制台添加配置列表:
在这里插入图片描述
我添加了两个配置列表,一个项目的私有配置,一个是公共配置(多项目共享)。

5. bootstrap.yml配置

在项目中创建bootstrap.yml文件,并配置Nacos服务地址以及namespace(没有就不需要配置):

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: 68468122-8955-45ee-a5b7-3d87972325b1

6. 配置dataId

有两种配置方式,一种是官方自动构建dataId ,另一种是指定dataId。

自动配置 dataId

在Nacos Spring Cloud中,dataId的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

比如项目名称为nacos-config-client,当前环境为test,格式文件为properties,那就需要新建一个dataId为nacos-config-client.properties配置。

手动设置 dataId

在NacosConfigProperties类里面name字段就是配置dataId:

public class NacosConfigProperties {
  /**
	 * nacos config dataId name.
	 */
	private String name;
  //省略其他配置
}

7. 获取数据

通过@Value就能获取配置文件的数据:

@Component
@RefreshScope
public class TestConfig {

    @Value(value = "${user.name:null}")
    private String test;

    public String getTest(){
        return test;
    }

要实现配置的自动更新,需要添加Spring Cloud原生注解 @RefreshScope。controller直接调用即可:

@RestController
public class TestController {

    @Autowired
    private TestConfig testConfig;

    @GetMapping("/config")
    public String testConfig(){
        String config = testConfig.getTest();
        return config;
    }
}

8. 扩展配置和共享配置

开发中,有时候会出现多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。

  • Nacos在配置路径spring.cloud.nacos.config.extension-configs下,允许我们指定⼀个或多个额外配置。

  • Nacos在配置路径spring.cloud.nacos.config.shared-configs下,允许我们指定⼀个或多个共享配置。

上述两类配置都⽀持三个属性:data-idgroup(默认为字符串DEFAULT_GROUP)、refresh(默认为true)。

spring:
  application:
    name: xxxxx-api
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        namespace: c38b64d5-02e3-49d8-9b4f-a139d6970ccc
        ## 公共配置
        shared-configs:
          - data-id: application.yml
            group: DEFAULT_GROUP
       # 常规配置文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-advanced.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

          - data-id: nacos-config-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
  • data-id : Data Id
  • group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的

注意:这里的Data ID后面是加.yaml后缀的,且不需要指定file-extension。

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

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

相关文章

VSCode使用CodeWhisperer(AI编程)

安装AWS Toolkit插件&#xff0c;点击侧边插件搜索并安装 2.点击aws ->CodeWhisperer ->Start 3.在下拉菜单中点击Use a personal email to sign up and sign in with AWS Builder ID 4.点Copy Code and Proceed&#xff0c;这会自动复制一些东西 5. 收到提示打开外部网…

高德API JS 地图获取多个坐标点的中心点

高德API JS 地图获取多个坐标点的中心点 一、需求 我需要&#xff1a; 在地图上展示多个地点地图缩放到合适的大小&#xff0c;要求刚好能显示全部点位边缘留有一部分间隔。 做成如图所示这样。 二、需要用到的 AMap 类库 经过一下午的研究&#xff0c;弄出来了。 需要以…

【计算机网络自顶向下】简答题习题总结(一)

计算机网络是什么 两个及以上具有独立操作系统的计算机通过某些介质连接成的相互共享软硬件资源的集合体。 计算机网络两大功能 连通性和共享 如何描述Internet 分为两方面 具体构成 计算机互连设备、通信链路、分组交换设备 提供服务&#xff1a; 提供网络应用基础架构为分布式…

计网第二章实验2:DNS

DNS实验pdf下载地址(科学上网)&#xff1a;Wireshark_DNS_v7.0 (umass.edu) 实验前置知识 nslookup命令 nslookup –option1 –option2 host-to-find dns-server 如果dns-server不指定的话那么就是默认的&#xff1a;本地DNS服务器 选项其一 -typeNS or -typeA 所代表的意思不…

文心一言 VS 讯飞星火 VS chatgpt (43)-- 算法导论5.4 7题

七、为使特征序列长度的下界变得更精确&#xff0c;请说明在 n 次硬币的公平抛掷中&#xff0c;不出现比Ign - 2lglgn 更长的连续正面特征序列的概率小于 1/n。 文心一言&#xff1a; 在 n 次硬币的公平抛掷中&#xff0c;每个硬币正、反面朝上的概率均为 1/2。让我们考虑一个…

【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)

零基础带你掌握人工智能全流程技术体系和实战指南&#xff08;LLM、AGI和AIGC都是什么&#xff09; 前言专栏介绍专栏说明学习大纲前提条件面向读者学习目标核心重点三连问核心学习目标和方向 什么是LLM大语言模型概念定义训练方式机器学习的类型LLM与无监督学习什么是无监督学…

视频剪辑培训班要学多久 视频剪辑的培训班有用吗

视频剪辑培训班要学多久&#xff1f;视学员的基础而定&#xff0c;零基础的学员可能需要花费较多的时间&#xff0c;而有基础的学员则更快上手。另外&#xff0c;学习的内容也会影响到学习周期。视频剪辑的培训班有用吗&#xff1f;靠谱的培训班会比自学更有用&#xff0c;效率…

为什么老板宁愿招年轻测试员?

测试员&#xff0c;30岁是一个分水岭&#xff0c;年龄越大越难找工作&#xff0c;为何&#xff1f;下面通过几方面来谈谈&#xff0c;为什么老板宁愿招年轻测试员。 可塑性强 年老的测试员可塑性不强了&#xff0c;通俗来讲&#xff0c;不会被老板画的大饼忽悠了。 而年轻人&…

canvas绘制s形曲线

<!DOCTYPE html> <html> <head><title>S形曲线示例</title> </head> <body><canvas id"canvas" width"400" height"400"></canvas><script>var canvas document.getElementById(c…

VUE-3组合API

1、为什么学vue3&#xff1f; 2020年09月18日&#xff0c;正式发布vue3.0版本。但是由于刚发布周边生态不支持&#xff0c;大多数开发者处于观望。 现在主流组件库都已经发布了支持vue3.0的版本&#xff0c;其他生态也在不断地完善中&#xff0c;这是趋势。 element-plus A Vue…

spring.freemarker 2306

Springboot Properties 2306 >spring.freemarker 模板属性 NameDescriptionDefault Valuespring.freemarker.allow-request-overrideWhether HttpServletRequest attributes are allowed to override (hide) controller generated model attributes of the same name.falses…

Cisco MPLS VPN Option A

一、拓扑 二、思路 1、AS 100内运行OSPF&#xff0c; AS 200运行OSPF打通底层网络 2、AS 100和200运行LDP协议&#xff0c;分发标签 3、PE1和ASBR-PE1建立VPNV4邻居关系&#xff08;可以看成是两个单域的PE建立VPNV4邻居关系&#xff09;&#xff0c;PE2和ASBR-PE2建立VPNV4…

Github拉取老版本或releases稳定版本的仓库

Github拉取老版本或releases稳定版本的仓库 文章目录 Github拉取老版本或releases稳定版本的仓库拉取老版本方法一&#xff1a;clone方法二&#xff1a;checkout 下载 releases 版本 拉取老版本 方法一&#xff1a;clone 随便进入一个仓库&#xff0c;查看分支信息 针对要拉取…

spring-security -oauth2 整合 JWT

前言 在这个基础上&#xff0c;进行整合。 spring security oauth2学习 -- 快速入门_本郡主是喵的博客-CSDN博客 1.jwt的一般使用 先把 reids,common-pools 等依赖删掉。 删掉redis的下相关配置 1.1 导入依赖 <!--jjwt--><dependency><groupId>io.json…

2023年测试工程师的职业规划?从入行到“顶薪“卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 初级测试工程师&a…

Python实现性能自动化测试竟然如此简单

一、思考 1.什么是性能自动化测试? 性能系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试使用程序代替手工提升测试效率性能自动化使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数&#xff0c;统计系统负载能力生成报告 2.Python中的性能自动化测试…

Netty 进阶

粘包与半包 粘包和半包问题的出现原因主要是因为 TCP 协议是面向流的&#xff0c;而不是面向报文的。即发送方给接收方传输的是一整个数据流&#xff0c;但是接收方并不知道数据流中的哪一部分才是一个完整的数据报&#xff0c;需要自行判断。 如果是在发送方解决&#xff0c;通…

微服务链路追踪SkyWalking的介绍和部署

skywalking和链路追踪 SkyWalking介绍 首先我们要明白一点&#xff0c;在微服务的架构中&#xff0c;为什么要做链路追踪&#xff1f;解决问题的痛点在哪里&#xff1f;其实无外乎是如下几个问题&#xff1a; 如何将整个调用链路串起来&#xff0c;并能够快速定位问题&#…

供应链管理是干什么的,企业为什么要用供应链管理?

供应链管理的核心是&#xff1a;需求、生产、供应等方面的管理。没有对需求的管理&#xff0c;供应链管理就没有存在的价值&#xff0c;需求管理主要是产品生命周期管理&#xff0c;订单及预测管理&#xff0c;尽管预测永远是错误的&#xff0c;但这并不排除你可以做出一个相对…

C语言学习笔记:单链表

✨博文作者&#xff1a;烟雨孤舟 &#x1f496; 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介&#xff1a;作为大数据爱好者&#xff0c;以下是个人总结的学习笔记&#xff0c;如有错误&#xff0c;请多多指教&#xff01; 目录 单链表…