SpringBoot整合Nacos配置中心和注册中心

一、背景

公司项目中使用的Nacos作为服务的注册中心和配置中心,但是呢公司的这一套Nacos是经过封装了的,而且封装的不是很友好,想着自己搭建一套标注的Nacos配置中心和服务中心

二、Nacos配置中心和注册中心搭建

2.1 依赖引入

<!--注册中心的依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.5.0</version>
        </dependency>

        <!-- 配置中心的依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.0.5.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.4</version>
        </dependency>

这里需要注意下SpringBoot的版本,不然jar包会有冲突,我这里使用的SpringBoot的版本是这个

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.13</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

 为什么要引入spring-cloud-starter-bootstrap的依赖呢?

答:因为在配置完Nacos注册中心和配置中心后,启动的时候报错如下错误,网上搜了一堆才找到回答。

SpringBoot和SpringCloud版本对应关系:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub 

2.2 application.yml配置

server:
  port: 9999
spring:
  cloud:
    nacos:
      discovery: #nacos服务注册的配置
        server-addr: 127.0.0.1:8848
        register-enabled: true
        namespace: da8ba5de-6fd4-428c-9e64-7dcb38d28805
  profiles:
    active: dev

2.3 bootstrap.properties配置

#nacos配置中心的相关配置
spring.cloud.nacos.config.file-extension=yaml 
spring.cloud.nacos.config.namespace=da8ba5de-6fd4-428c-9e64-7dcb38d28805
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP
#注意:应用的名称必须要在这里配置;不然在修改了Nacos配置之后,无法实时更新配置信息
spring.application.name=demo

2.4 启动入口加注解

加入@EnableDiscoveryClient注解

@EnableDiscoveryClient
@SpringBootApplication(scanBasePackages = {"com.example"})
@MapperScan({"com.example.demo.mapper"})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

2.5 Nacos配置类

网上很多直接使用@Value注解的,但是在实际使用的过程中,发现@Value注解会导致更改了的配置不会实时刷新,所以最好是@RefreshScope和@ConfigurationProperties配合一起使用。

@RefreshScope
@Data
@Configuration
@ConfigurationProperties(prefix = "demo")
public class DemoPropertites {

    private String test;
}
@RestController
@RequestMapping("/nacos")
public class NacosController {
    @Resource
    private DemoPropertites demoPropertites;



    @RequestMapping("/config")
    public String getConfig(){
        return demoPropertites.getTest();
    }
}

2.6  启动本地Nacos服务

2.6.1 本地Nacos服务下载

Releases · alibaba/nacos · GitHub

我这边使用的是nacos-server-2.2.2版本的,刚开始使用的是1.4.5版本,发现有问题

2.6.2 本地Nacos启动

直接参考官网的启动方式:https://github.com/alibaba/nacos 

2.7 本地Nacos访问

localhost:8848/nacos  账号:nacos 密码:nacos

 2.8 创建Nacos命名空间

如果不创建命名空间的话,默认使用的是pulic保留空间;我创建了一个dev的命名空间

2.9 创建配置文件

在dev命名空间下,创建demo.yaml配置文件;注意Data Id的命名,默认情况是${spring.application.name}.${spring.cloud.nacos.config.file-extension}
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

spring.application.name:应用的名称

spring.profiles.active:当前启动的环境

spring.cloud.nacos.config.file-extension:nacos配置文件的后缀,支持yaml和properties

 2.10 启动项目

启动完成后Nacos会监听如下三个文件,如果有改动,则会更新配置文件信息

 未修改配置前,nacos数据获取:

修改配置后,nacos数据获取:

服务注册:

3. Nacos多环境配置

主要有以下三个环境的配置文件

 

开发环境:bootstrap-dev.properties

spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.namespace=da8ba5de-6fd4-428c-9e64-7dcb38d28805
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.register-enabled=true
spring.cloud.nacos.discovery.namespace=da8ba5de-6fd4-428c-9e64-7dcb38d28805

测试环境:bootstrap-test.properties

spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.namespace=52990b07-f6dd-4f24-b2e3-2523516d368b
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.register-enabled=true
spring.cloud.nacos.discovery.namespace=52990b07-f6dd-4f24-b2e3-2523516d368b

生产环境:bootstrap-pro.properties

spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.namespace=4d73106d-10f7-4893-bd75-a8b12244304d
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.register-enabled=true
spring.cloud.nacos.discovery.namespace=4d73106d-10f7-4893-bd75-a8b12244304d

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】shell编程之循环语句

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、循环语句二、for循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 循环语句结构2.while语句应用示例 四、until 循环五、跳出循环六、死循…

新品发布全线添员,九号全力奔向“红海”深处?

5月10日&#xff0c;九号公司2023新品发布会声势达到顶峰。此次发布会的看点为九号电动2023产品线的更新&#xff0c;电动家族再添多员大将。 随着人们出行选择的多样化&#xff0c;国内短途出行工具发展迎来井喷期。在传统的电动两轮车市场上&#xff0c;雅迪、爱玛等品牌仍然…

今年这面试难度,我给跪了……

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…

关于cartographer建立正确关系树的理解

正确的TF关系map----odom----base_link----laser base_link是固定在机器人本体上的坐标系&#xff0c;通常选择飞控 其中map–odom 的链接是由cartographer中lua文件配置完成的 map_frame "map", tracking_frame "base_link", published_frame "b…

MySQL日志

目录 错误日志 查询日志 二进制日志 慢查询日志 redo log 和 undo log &#xff08;事务日志&#xff09; redo log&#xff1a; undo log&#xff1a; mysql> show variables like log_%; 返回所有以"log_"开头的系统变量和它们的值&#xff0c;这些变量控…

研读Rust圣经解析——Rust learn-12(智能指针)

研读Rust圣经解析——Rust learn-12&#xff08;智能指针&#xff09; 智能指针智能指针选择Box<T>使用场景创建Box使用Box在堆上存储递归类型数据解决 通过 Deref trait 将智能指针当作常规引用处理追踪指针的值创建自定义的智能指针&#xff08;*&#xff09; Deref隐式…

开源智慧家居

与家居行业、服务行业等伙伴协同合作&#xff0c;努力创造社会价值&#xff0c;提升行业整体服务 水平&#xff0c;树立家居服务业统一售后标准&#xff0c;构建品质、高效、有温度的居家生活服务新生态。 为企业商家和个人客户提供家居配送、搬运、安装、维修、保养等服务。 …

IPC:匿名管道和命名管道

一 管道初级测试 写两个小程序&#xff0c;一个负责向管道发数据&#xff0c;一个从管道接收数据&#xff1b; pipe.cpp #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } pipe2.cpp #inclu…

Java线程池及其实现原理

线程池概述 线程池&#xff08;Thread Pool&#xff09;是一种基于池化思想管理线程的工具&#xff0c;经常出现在多线程服务器中&#xff0c;如MySQL。 线程过多会带来额外的开销&#xff0c;其中包括创建销毁线程的开销、调度线程的开销等等&#xff0c;同时也降低了计算机…

【设计模式】单例模式(懒汉和饿汉模式详解)

目录 1.设计模式是什么&#xff1f; 2.单例模式 1.概念&#xff1a; 2.如何设计一个单例 1.口头约定&#xff08;不靠谱&#xff09; 2.使用编程语言的特性来处理 3.使用"饿汉模式"设计单例 1.详细步骤 2.完整代码 4.使用"饿汉模式"设计单例 1.详…

为什么我在大厂待了三个月就选择离开?我聊聊应届生该选择大厂还是小公司

我在互联网大厂只待了3个月就离开了&#xff0c;主要原因不是大厂的福利或者薪资不够好&#xff0c;只是因为我发现在大厂里每天都有开不完的会&#xff0c;忙碌到没有自己的生活。当时我每天10点上班&#xff0c;晚上要工作到11甚至是12点&#xff0c;甚至半夜两三点都接到过工…

Flowable+React+bpmn-js实现工作流

由于新东家使用的是React&#xff0c;不是Vue&#xff0c;而自己一直想做一个关于工作流的应用出来&#xff0c;断断续续&#xff0c;花了几个月的时间&#xff0c;开发了工作流的功能&#xff0c;后面会继续完善。 技术栈 前端 前端是基于React开发的&#xff0c;使用了ant…

OpenCV 直方图统计函数 cv::calcHist算是彻底弄明白了

参数说明 void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,OutputArray hist, int dims, const int* histSize,const float** ranges, bool uniform true, bool accumulate false );images 图像数组。每个图像的大小要一致&#xff0c…

最强算法视频公开课!(内容硬核,完全免费!

和录友们汇报一下&#xff0c;代码随想录算法公开课已经更新完毕了。 由我亲自录制了140期算法视频&#xff0c;覆盖了 《代码随想录》纸质版上全部题目的讲解。 视频全部免费开放在B站&#xff1a;代码随想录 目录就在视频播放的右边&#xff0c;完全按照代码随想录的顺序讲…

鸿蒙Hi3861学习七-Huawei LiteOS-M(信号量)

一、简介 信号量&#xff08;Semaphore&#xff09;是一种实现任务间通信的机制&#xff0c;实现任务之间同步或临界资源的互斥访问。常用于协助一组相互竞争的任务来访问临界资源。 在多任务系统中&#xff0c;各任务之间需要同步或互斥实现临界资源的保护&#xff0c;信号量功…

面对AI“龙卷风”破坏力 白宫“软着陆”欧盟“硬防御”

ChatGPT的风靡与风险将OpenAI的CEO山姆奥特曼&#xff08;Sam Altman&#xff09;送进白宫&#xff0c;他被蹲守在美国总统府邸的记者们围追&#xff0c;面对5月4日白宫发起的AI风险治理会议&#xff0c;奥特曼很官方地给出“重要也很及时”的回应&#xff0c;自信的反复强调“…

chatGPT润色中英论文软件-文章修改润色器

chatGPT可以润色英文论文吗&#xff1f; ChatGPT可以润色英文论文&#xff0c;它具备自动纠错、自动完善语法和严格全面的语法、句法和内容结构检查等功能&#xff0c;可以对英文论文进行高质量的润色和优化。此外&#xff0c;ChatGPT还支持学术翻译润色、查重及语言改写等服务…

Java入门指南:从零开始的基础语法

java语言概述 Java是一种高级编程语言&#xff0c;最初由Sun Microsystems&#xff08;现在是Oracle Corporation的一部分&#xff09;在1995年推出。Java以其简单、可移植和安全的特性而闻名&#xff0c;并广泛用于各种应用程序开发&#xff0c;从桌面应用程序到移动应用程序和…

icevision环境安装

Installation - IceVision # 1. git clone 代码# pip 换源&#xff1a; ~/.pip/pip.conf 隐藏文件[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-hostmirrors.aliyun.compip install -e .[all,dev]ImportError: cannot import name Multi…

ASEMI代理ADUM131E1BRWZ-RL原装ADI车规级ADUM131E1BRWZ-RL

编辑&#xff1a;ll ASEMI代理ADUM131E1BRWZ-RL原装ADI车规级ADUM131E1BRWZ-RL 型号&#xff1a;ADUM131E1BRWZ-RL 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;SOIC-16-300mil 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;16 工作温度…