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

news2024/11/23 2:49:39

SpringBoot 整合 Nacos

引入 Maven 依赖

首先,我们还是要引入 Maven 依赖👇

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

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

⭕这里有一点是需要注意的:注册中心和配置中心的依赖版本要根据 SpringBoot 版本来选择。版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。 在这里我使用的 SpringBoot 版本是 2.2.4.RELEASE ,所以选择了 0.2.3 版本的注册中心和配置中心。

增加配置

接下来就是在 application.yml 中增加相关的配置👇

server:
  port: 80
  servlet:
    context-path: /
spring:
  application:
    name: NacosDemo
nacos:
  config:
    server-addr: 127.0.0.1:8848
  discovery:
    server-addr: 127.0.0.1:8848

示例代码

首先我们需要在项目启动类上增加两个 Nacos 的注解👇

import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import com.alibaba.nacos.spring.context.annotation.discovery.EnableNacosDiscovery;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableNacosDiscovery //注册中心注解 使用nacos
@NacosPropertySource(dataId = "product_config",autoRefreshed = true) //配置中心注解:autoRefreshed 代表自动刷新注解
public class NacosdemoApplication {

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

}

接下来我们需要再增加一个 Nacos 的配置文件👇

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;

/**
 * @program: NacosDemo
 * @description: NacosConfig
 * @author: 庄霸.liziye
 * @create: 2022-04-29 16:39
 **/
@Configuration
public class NacosConfig {
    @Value("${server.port}")
    private int serverPort;
    @Value("${spring.application.name}")
    private String applicationName;
    @NacosInjected
    private NamingService namingService;
    @PostConstruct
    public void registerInstance() throws NacosException {
        namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
    }
}

最后我们写一个模拟获取配置参数的 Controller 类👇

import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * ConfigController 配置控制器
 * @description: ConfigController
 * @author: 庄霸.liziye
 * @create: 2022-04-29 15:29
 **/
@RestController
@RequestMapping("/test")
public class ConfigController {

    @NacosValue(value = "${productName}",autoRefreshed = true)
    private  String productName;

    @RequestMapping("/productName")
    public String getProductName(){

        return productName;
    }
}

到这里代码已经准备完毕了,既然我们有一个获取配置参数的 Controller,那么我们肯定也少不了要定义一个待获取的配置参数。我们启动 Nacos ,登录它的后台页面,在左侧的配置管理中找到配置列表,在配置列表下创建一个新的配置。

❗❗❗这里一定要注意❗❗❗:在 Nacos 管理页面新增参数时,所填写的 Data ID 值必须要和启动类上 @NacosPropertySource 注解中的 dataId 值是一致的;而且在定义配置内容的时候,配置的名字必须要和 Controller 中定义的名字保持一致。二者中无论哪一个名字不匹配,在启动项目时都会报找不到配置的错误。

到这里,代码和配置都已经准备完毕了,我们启动一下项目看看具体效果... 项目启动后,我们在 Nacos 管理页面左侧找到服务管理下的服务列表,打开服务列表就可以看到我们的项目成功的注册进了 Nacos。

接下来,我们在浏览器访问 http://localhost/test/productName,可以看到我们新增的配置被成功的取了出来。如果此时配置需要改变,我们只需要在 Nacos 的后台修改对应的配置,然后刷新一下页面就可以看到配置已经动态更新了👇

到这里 SpringBoot 整合 Nacos 实现注册中心和配置中心就全部完成了,是不是比 Eureka+Config 的方式方便了许多 (●'◡'●) ~

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

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

相关文章

雷达气象学和卫星气象学期末复习笔记

雷达气象学期末复习 气象雷达和雷达气象 气象雷达&#xff1a;用于气象探测的雷达&#xff0c;气象目标主要是云和降水粒子 雷达气象&#xff1a;利用气象雷达研究气象中的局地降水和局地降水系统&#xff0c;为降水系统的探测和临近预报服务 雷达的分类 天气雷达&#xff1a;…

CTF-取证题目解析-提供环境

一、安装 官网下载&#xff1a;Volatility 2.6 Release 1、将windows下载的volatility上传到 kali/home 文件夹里面 3、将home/kali/vol刚刚上传的 移动到use/sbin目录里面 mv volatility usr/local/sbin/ 切换到里面 cd /usr/local/sbin/volatility 输入配置环境echo $PAT…

SpringBoot依赖原理分析及配置文件

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 SpringBoot依赖原理分析及配置文件 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1f4c4…

电脑文件被误删?360文件恢复工具,免费的文件恢复软件

电脑里面保存着各种文件&#xff0c;因为误操作我们把还需要用的文件给删除了。很多人都想要使用不收费的文件恢复软件来进行恢复操作&#xff0c;但是又不清楚有哪些文件可以帮到我们。接下来就给大家介绍&#xff0c;一款真正免费的数据 恢复app&#xff0c;一起来看看&#…

eSGD(edge SGD) 边缘设备进行分布式机器学习的参数聚合策略实现高效通信 论文精读

说明 这篇论文比较短&#xff0c;但是提出的方法确很不错。联邦学习或者分布式机器学习中减少通信开销一般有两种方法&#xff1a; 减少发送的数据量&#xff1b;通过改变通信的拓扑结构&#xff1b; 本文通过选取重要的梯度进行更新而减少通信的开销&#xff0c;属于第一种…

招聘链接怎么做_分享招聘小程序制作步骤

招聘小程序的主要用户就是企业招聘端和找工作人员的用户端,下面从这两个端来对招聘小程序开发的功能进行介绍。 企业端功能 1、岗位发布:企业根据自身岗位需求,在招聘app上发布招聘岗位及所需技能。 2.简历筛选:根据求职者提交的简历选择合适的简历,并对公开发布的简历进行筛…

主数据管理平台如何进行模型管理

企业管理主数据&#xff0c;模型管理尤为重要。在对主数据进行建模操作时&#xff0c;既要保证数据通用性、安全性&#xff0c;又要符合企业的业务需求。今天小亿带你认识一下亿信华辰睿码主数据管理平台里的主数据模型管理。 主数据模型分类 一款专业的主数据管理平台&#…

【RabbitMQ笔记01】Windows搭建RabbitMQ消息队列基础运行环境

这篇文章&#xff0c;主要介绍如何在Windows系统中&#xff0c;搭建RabbitMQ消息队列的运行环境。 目录 一、RabbitMQ消息队列 1.1、什么是RabbitMQ 1.2、安装Erlang &#xff08;1&#xff09;下载安装包 &#xff08;2&#xff09;配置环境变量 &#xff08;3&#xff…

C++STL剖析(七)—— map和multimap的概念和使用

文章目录1. map的介绍和使用&#x1f351; map的模板参数列表&#x1f351; map的构造&#x1f351; map的使用&#x1f345; insert&#x1f345; operator[ ]&#x1f345; find&#x1f345; erase&#x1f345; swap&#x1f345; empty&#x1f345; size&#x1f345; co…

共享—1658页《Java面试突击核心手册》几乎覆盖市面上所有面试考点

说快也快&#xff0c;说不快也不慢&#xff01; 年前&#xff0c;陆陆续续&#xff0c;好多大厂都在裁员&#xff1b; 年后&#xff0c;又有一大批程序员失业&#xff0c;找不到避风港&#xff1b; 这时候&#xff0c;就有人说了&#xff0c;为什么找工作这么难&#xff1f;…

堆排序的概念

文章目录一、堆&#xff08;Heap&#xff09;的基本概念1.1 引入二叉树的顺序存储二、建立大根堆三、基于大根堆进行排序选择排序&#xff1a;在每一趟待排元素中选取关键字最小&#xff08;或最大&#xff09;的元素加入有序子序列选择排序分为&#xff1a; 简单选择排序堆排…

springboot+mybatis连接数据库实现增删改查功能

springbootmybatis连接数据库实现增删改查功能创建表创建项目实体类DAO接口写sql的XML文件Service层Controller启动类结果目录结构参考博客创建表 create table user(id int ,name varchar(30),pwd varchar(40) )insert into user values(2,hxf,789101),(3,hlm,789102),(4,hzh…

【ArcGIS自定义脚本工具】批量对栅格执行栅格计算器

文章目录一、功能介绍二、脚本代码三、工具参数四、用例4.1 批量单位换算4.2 批量计算植被覆盖度4.3 批量填充空值系列文章目录&#xff1a; ArcGIS自定义脚本工具一、功能介绍 功能 将多个栅格文件按照某以代数表达式执行栅格计算器(Raster Calculator) 工具&#xff0c;并将输…

linux内核内存笔记

一、linux用户态内核态内存结构 对于32位的linux操作系统&#xff0c;系统为每个进程分配0~4G的内存空间&#xff0c;而64位系统则更大&#xff1a; linux内存空间地址范围 可见Linux的内存分配规则&#xff1a; 二、总体分配规则 1、用户态在低地址&#xff0c;内核态在高地址…

进击中的 Zebec 生态,Web2 与 Web3 世界的连接器

虽然从意识形态上看&#xff0c;Web2世界与Web3世界存在着不同的逻辑&#xff0c;但我们同样看到&#xff0c;随着加密资产领域的发展&#xff0c;其正在作为优质投资品&#xff0c;被以Paypal、高盛等主流机构重视与接受。当然&#xff0c;除了作为投资者品外&#xff0c;近年…

C++学习笔记-环境设置

C 是一种通用编程语言&#xff0c;如今已广泛用于竞争性编程。它具有命令式&#xff0c;面向对象和通用编程功能。 C 在Windows&#xff0c;Linux&#xff0c;Unix&#xff0c;Mac等许多平台上运行。在开始使用C 进行编程之前。我们将需要在本地计算机上设置一个环境&#xff0…

用PHP实现CSPRepor报告预警信息存储和动态显示。

一、了解CSP内容安全策略 CSP 的实质就是白名单制度&#xff0c;开发者明确告诉客户端&#xff0c;哪些外部资源可以加载和执行&#xff0c;等同于提供白名单。它的实现和执行全部由浏览器完成&#xff0c;开发者只需提供配置。 作用就是&#xff1a;大大增强了网页的安全性。…

透明和半透明效果

Alpha通道 透明度可以通过base map的alpha通道来控制。Alpha值低的话&#xff0c;mesh就变得更加透明&#xff0c;alpha值高的话&#xff0c;mesh的透明度会变低&#xff0c;变得能更加轻松地被看到。当alpha为0时&#xff0c;mesh就完全不可见了&#xff0c;alpha值在中间时&a…

kubernetes(k8s) 知识总结(第2期)

1. “控制器”思想 kube-controller-manager 是一系列控制器的集合&#xff0c;这些控制器被放在 Kubernetes 项目的 pkg/controller 目录&#xff0c;这些控制器都以独有的方式负责某种编排功能。它们都遵循一个通用的编排模式——控制循环。 以 Deployment 为例介绍它对控…

最最普通程序员,如何利用工资攒够彩礼,成为人生赢家

今天我们不讲如何提升你的专业技能去涨工资&#xff0c;不讲面试技巧如何跳槽涨工资&#xff0c;不讲如何干兼职赚人生第一桶金&#xff0c;就讲一个最最普通的程序员&#xff0c;如何在工作几年后&#xff0c;可以攒够彩礼钱&#xff0c;婚礼酒席钱&#xff0c;在自己人生大事…