Spring Cloud集成nacos配置中心

news2024/11/16 13:42:56

1.添加Nacos Config依赖

打开nacos-config-demo的pom.xml文件并添加以下两个依赖项

项目的配置文件中通常包括数据库连接配置项、日志输出配置项、Redis连接配置项、服务注册配置项等内容,如spring-cloud-alibaba-nacos-config-base-demo项目中就包含数据库连接配置项和服务注册配置项。如果把这些配置项存放在配置中心,为了保证项目能够正常启动,就必须在数据源实例配置、服务注册流程之前读到所有配置项,因为类似数据源、日志工厂等实例的初始化和服务注册流程都是在项目启动过程中进行的。

基于这个原因,在服务的启动阶段就需要将连接Nacos配置中心的配置项加载优先级设置为最高。在Spring Boot规范中,bootstrap配置文件(bootstrap.yml或bootstrap.properties)用来引导程序时执行,应用于更加早期的配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的,其加载优先级高于application配置文件(application.yml或application.properties)。将连接Nacos配置中心的配置项放到bootstrap文件中,能够确保在启动阶段优先读取Nacos配置中心里存储的配置项。添加完依赖,接下来就要配置连接Nacos配置中心的参数了。

2.代码中配置Nacos Config连接参数

先在的resource目录下创建bootstrap.properties配置文件。然后在bootstrap.properties文件中添加一些连接Nacos配置中心的参数,代码及参数释义如下:

3.添加配置文件到Nacos配置中心

打开浏览器并进入Nacos控制台页面,如果没有配置自定义命名空间,就可以单击左侧导航栏中的“命名空间”按钮,打开“新建命名空间”对话框

在“新建命名空间”对话框中主要设置命名空间ID、命名空间名和描述。其中,命名空间ID就是连接配置中心的spring.cloud.nacos.discovery.namespace配置项和连接服务注册中心的spring.cloud.nacos.config.namespace配置项所要填写的值,笔者将其设置为dev。如果不设置,则会自动生成一个长度为36个字符的字符串。

单击左侧导航栏中的“配置列表”按钮,再切换到“开发环境”命名空间(dev)

单击配置管理页面右侧的“+”按钮,可以新建一项配置。在这里可以把原来在application.properties文件中的配置项存储到Nacos配置中心。

“新建配置”页面包含7个选项:Data ID、Group、标签、归属应用、描述、配置格式和配置内容,重要的选项释义如下。

(1)Data ID:配置的唯一标识,必填项。

(2)Group:指定配置文件的分组,这里设置默认分组DEFAULT_GROUP即可,必填项。

(3)描述:说明配置文件的用途,可不填。

(4)配置格式:指定“配置内容”的类型(文件后缀名),必填项。

(5)配置内容:程序运行所需的配置项列表,必填项。在“新建配置”页面中,笔者指定了Data ID为newbee-cloud-config-service-dev.properties、Group为自定义分组NEWBEE_CLOUD_DEV_GROUP、配置格式为Properties。在“配置内容”文本框中,笔者将端口号、注册中心连接配置项和数据库连接配置项添加了进去。

4.Data ID详解

Data ID在Nacos配置中心里是配置项的唯一标识符,用于标识一个配置项信息,并在客户端获取配置信息时使用。组成Data ID的完整参数如下:

其中,${prefix}默认为应用名称,即spring.application.name配置项的值;${spring.profiles.active}是当前选择的环境;${file-extension}是配置内容的数据格式,即配置文件的后缀名。当前项目的bootstrap.properties文件中已经对上述三个配置项做了配置:

因此,在拉取配置中心的配置时所读取的Data ID就是newbee-cloud-config-service-dev.properties,这也是在“新建配置”页面中笔者将Data ID指定为newbee-cloud-config-service-dev.properties的原因,并不是随意输入的。如果在Data ID中输入了其他字符串,则程序无法通过配置中心拉取正确的配置,启动阶段会直接报错。

如果spring.profiles.active配置项并未指定,则对应的连接符“-”也没了,Data ID的组成参数会变成${prefix}.${file-extension}。比如,本节中的演示代码,如果不指定spring.profiles.active配置项,则Data ID就是newbee-cloud-config-service-dev.properties。

另外,若不想使用应用名称作为prefix,可以使用spring.cloud.nacos.config.prefix进行自定义。比如,本节中的演示代码如果增加了一个配置项:

那么Data ID就是config-service-dev.properties。如果在Nacos配置中心没有新建config-service-dev.properties,则程序在启动时无法拉取配置信息,会直接报错。

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

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

相关文章

控件交互触屏操作

控件交互 print(driver.find_element(By.ID, com.xueqiu.android:id/tv_agree).is_enabled()) # 判断元素是否可点击 print(driver.find_element(By.ID, com.xueqiu.android:id/tv_agree).is_display()) # 判断元素是否可显示 print(driver.find_element(By.ID, com.xueqiu.…

【梳理】k8s使用Operator搭建Flink集群(高可用可选)

文章目录 1. 架构图2. helm 安装operator3. 集群知识k8s上的两种模式:Native和Standalone两种CR 4. 运行集群实例Demo1:Application 集群Demo2:Session集群优劣 5. 高可用部署问题1:High availability should be enabled when sta…

spring boot 使用 webservice

spring boot 使用 webservice 使用 java 自带的 jax-ws 依赖 如果是jdk1.8,不需要引入任何依赖&#xff0c;如果大于1.8 <dependency><groupId>javax.jws</groupId><artifactId>javax.jws-api</artifactId><version>1.1</version&g…

JVM-3

HotSpot虚拟机对象 我在网上看了很多相关的文章&#xff0c;发现在创建对象和对象的结构中内容都不太一样&#xff0c;一些关键字也很不同&#xff0c;于是我通过参考《深入理解Java虚拟机》这本书&#xff0c;自己总结了一篇。 1.对象的创建 当JVM收到一条创建对象的字节码…

uniapp:音乐播放器

功能要求&#xff1a;全局音乐播放&#xff0c;可以上一首&#xff0c;下一首&#xff0c;暂停&#xff0c;播放。 1、mixins export default {data() {return {audio: null, // 音频对象playlist: [{url: require(../static/1.mp3)}, {url: require(../static/2.mp3)}, {url: …

多接入边缘计算赋能的AI质检系统任务实时调度策略

源自&#xff1a;电子与信息学报 作者&#xff1a;周晓天, 孙上, 张海霞, 邓伊琴, 鲁彬彬 “人工智能技术与咨询” 发布 摘 要 AI质检是智能制造的重要环节&#xff0c;其设备在进行产品质量检测时会产生大量计算密集型和时延敏感型任务。由于设备计算能力不足&#xff0c…

少儿编程机器人技术架构解析与实现流程

随着科技的飞速发展&#xff0c;少儿编程机器人成为了越来越受欢迎的教育工具&#xff0c;为孩子们提供了学习编程的新途径。在这篇文章中&#xff0c;我们将深入探讨少儿编程机器人的技术架构和实现过程&#xff0c;揭示背后的技术原理和开发策略。同时&#xff0c;我们也将介…

java-ssm-基于jsp商场停车服务管理信息系统

java-ssm-基于jsp商场停车服务管理信息系统

http协议中的强缓存与协商缓存,带图详解

此篇抽自本人之前的文章&#xff1a;http面试题整理 。 别急着跳转&#xff0c;先把缓存知识学会了~ http中的缓存分为两种&#xff1a;强缓存、协商缓存。 强缓存 响应头中的 status 是 200&#xff0c;相关字段有expires&#xff08;http1.0&#xff09;,cache-control&…

案例分析篇03:一篇文章搞定软考设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Django环境下使用Ajax

Django环境下使用Ajax 目录 Django环境下使用Ajax介绍前情提要示例JS实现Ajax实现 传递JSON格式数据传递文件数据Django自带的序列化组件基于jsonresponse序列化数据基于Django自带的serializers 注册示例 介绍 AJAX 的主要目标是在不刷新整个页面的情况下&#xff0c;通过后台…

活动图高阶讲解-02

130 00:07:05,080 --> 00:07:06,680 这是历史 131 00:07:06,680 --> 00:07:11,400 那么在这个过程中 132 00:07:11,400 --> 00:07:14,840 就会出现多种变体了 133 00:07:14,840 --> 00:07:15,560 一个变体 134 00:07:15,560 --> 00:07:16,640 就是BPMN 135…

7.无重复字符的最长字串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…

【包邮送书】Elasticsearch 通过索引阻塞实现数据保护深入解析

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

【C++干货基地】面向对象核心概念与实践原理:拷贝构造函数的全面解读

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

Learn OpenGL 07 摄像机

定义摄像机参数 glm::vec3 cameraPos glm::vec3(0.0f, 0.0f, 3.0f);//摄像机位置glm::vec3 cameraTarget glm::vec3(0.0f, 0.0f, 0.0f);glm::vec3 cameraDirection glm::normalize(cameraPos - cameraTarget);//摄像机方向&#xff0c;指向z轴正方向 glm::vec3 up glm::vec…

套接字编程 --- 三

目录 1. 前置性知识 1.1. listen 系统调用 1.2. accept 系统调用 1.3. 如何通信 1.3.1. read 系统调用 && write系统调用 1.3.2. recv 系统调用 && send 系统调用 2. TCP --- demo 2.1. Tcp_Server.hpp (version 1) 2.2. Tcp_Server.hpp (version 2…

[AIGC] Kafka解析:分区、消费者组与消费者的关系

Apache Kafka是一个分布式事件流平台&#xff0c;它是处理实时数据的强大工具。而理解Kafka的关键概念&#xff1a;分区&#xff08;Partition&#xff09;、消费者组&#xff08;Consumer Group&#xff09;和消费者&#xff08;Consumer&#xff09;的关系对于正确地使用Kafk…

C语言--- 指针运算笔试题详解

目录 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a; 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; 题目1&#xff1a; #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);print…

C#与WPF通用类库

个人集成封装&#xff0c;仓库已公开 NetHelper 集成了一些常用的方法&#xff1b; 如通用的缓存静态操作类、常用的Wpf的ValueConverters、内置的委托类型、通用的反射加载dll操作类、Wpf的ViewModel、Command、Navigation、Messenger、部分常用UserControls(可绑定的Passwo…