Nacos实现配置中心

news2025/8/6 18:52:36

文章目录

    • 配置中心提供的基础功能
    • Nacos实现配置中心
      • 1、在配置文件增加配置(application.yml)
      • 2、使用@Value来引用配置
    • 使用配置中心,怎样的配置方式呢
      • 一、安装nacos
      • 二、启动服务发现
        • 1、引入依赖
        • 2、配置文件
        • 3、开启服务注册发现功能
        • 4、启动服务
      • 三、启动配置管理
        • 1、引入依赖
        • 2、获取Nacos server的配置信息
        • 3、新建配置bootstrap.yml文件
      • 四、配置自动刷新
        • 1:引入依赖
        • 2:配置类加入@RefreshScope注解


配置中心提供的基础功能

  • 统一管理不同环境、不同集群的配置
  • 配置修改实时生效(热发布)
  • 版本管理,每次配置的修改都会有版本记录,可随时回滚
  • 权限管理。配置中心可交给专人来管理,做到配置的权限管理

Nacos实现配置中心

使用配置中心之前,一般这样实现配置,把配置都放到配置文件中,Java代码通过@Value去拿配置或者通过@PropertySource来进行配置:

1、在配置文件增加配置(application.yml)

shortLink:
  url: https://openapidev.xinchengyue.com
  appId: 2020092275789623479853728
  privateKeyIsv: MIIEvgIBADANBgqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCe7DUtSpPMpejhC6vg5HR6Xl15A3QwOueu

2、使用@Value来引用配置

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Test {

    @Value("${shortLink.url}")
    private String url;

    @Value("${shortLink.appId}")
    private String appId;

    @Value("${shortLink.privateKeyIsv}")
    private String privateKeyIsv;

    @RequestMapping("/test")
    public String test(){
        return "url:" + url + "</br>appId:" + appId + "</br>privateKeyIsv:" + privateKeyIsv;
    }
}

启动服务,访问 http://localhost:8080/test 返回信息

url:https://openapidev.xinchengyue.com
appId:2020092275789623479853728
privateKeyIsv:MIIEvgIBADANBgqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCe7DUtSpPMpejhC6vg5HR6Xl15A3QwOueu

使用配置中心,怎样的配置方式呢

一、安装nacos

参考:安装步骤
启动后如图所示:
在这里插入图片描述
访问:http://localhost:8848/nacos/index.html

用户名: nacos 密码:nacos
在这里插入图片描述

二、启动服务发现

接下来,讲一下如何在您的 Spring Cloud 项目中启用 Nacos 的服务发现功能。配置服务,从而服务可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。

1、引入依赖

		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
			<version>2.1.1.RELEASE</version>
		</dependency>

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

2、配置文件

application.yml中配置 Nacos server 的地址和应用名。

spring:
  application:
    name: nacos-test
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

3、开启服务注册发现功能

通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能。

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
public class XlfTestApplication {
	public static void main(String[] args) {
		SpringApplication.run(XlfTestApplication.class, args);
	}
}

4、启动服务

启动服务,然后到Nacos server查看是否注册成功。
在这里插入图片描述

三、启动配置管理

1、引入依赖

		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
			<version>2.1.1.RELEASE</version>
		</dependency>

注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

2、获取Nacos server的配置信息

在Nacos server上增加配置信息(配置管理->配置列表->新增配置)
  在这里插入图片描述
在这里插入图片描述

3、新建配置bootstrap.yml文件

spring:
  application:
    name: nacos-test
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        group: DEFAULT_GROUP
        file-extension: yml
        refresh-enabled: true
        prefix: nacos-test

为什么要新建bootstrap.yml配置文件,而不是直接在原来的application.yml中新增配置呢?是因为要实现nacos配置中心里面的配置要优先于系统配置文件中的配置,假如两个地方同时配置了,会优先取nacos的配置

配置说明:

  • spring.application.name 配置应用的名称,用于获取配置
  • spring.cloud.nacos.config.server-addr 配置nacos服务的地址
  • spring.cloud.nacos.config.group 配置分组
  • spring.cloud.nacos.config.file-extension 配置文件后缀,用于拼接配置配置文件名称
  • spring.cloud.nacos.config.refresh-enabled 配置自动刷新
  • spring.cloud.nacos.config.prefix 配置文件的前缀

启动项目,访问 http://localhost:8080/test

返回信息

url:nacos------https://openapidev.xinchengyue.com
appId:nacos------2020092275789623479853728
privateKeyIsv:nacos------MIIEvgIBADANBgqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCe7DUtSpPMpejhC6vg5HR6Xl15A3QwOueu

说明已经读到nacos中的配置了,而且本地配置文件和nacos中同时配置的,取的是nacos中的配置

四、配置自动刷新

在配置的类增加@RefreshScope就可以实现自动刷新配置,当nacos中的配置修改后,项目无需重启就可以自动生效,这个在实际生产环境中是很有用的,有时候你需要修改线上的配置,如果没有配置中心,你需要重启服务

1:引入依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

2:配置类加入@RefreshScope注解

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope//自动刷新配置
public class Test {

    @Value("${shortLink.url}")
    private String url;

    @Value("${shortLink.appId}")
    private String appId;

    @Value("${shortLink.privateKeyIsv}")
    private String privateKeyIsv;

    @RequestMapping("/test")
    public String test(){
        return "url:" + url + "</br>appId:" + appId + "</br>privateKeyIsv:" + privateKeyIsv;
    }
}

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

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

相关文章

quarkus 生产环境与k8s集成总结

quarkus 生产环境与k8s集成总结 大纲 基础准备quarkus2.13.7脚手架工程配置GraalVM-java11 安装配置配置maven3.8.7linux环境下云原生二进制文件打包环境搭建编译运行quarkus二进制文件quarkus二进制文件制作为docker镜像并运行使用k8s部署quarkus二进制文件 基础准备 生产…

手把手交叉编译mysql

1.下载mysql&#xff08;注意下载boost版本&#xff0c;这样会少一步编译&#xff09; 下载mysql的时候一定要看好交叉编译工具链的版本。因为mysql 8.0需要的工具链版本较高&#xff0c;所以有可能不支持 查看链接如下&#xff1a; MySQL :: MySQL 8.0 Reference Manual :: …

InstructGPT方法简读

InstructGPT方法简读 引言 仅仅通过增大模型规模和数据规模来训练更大的模型并不能使得大模型更好地理解用户意图。由于数据的噪声极大&#xff0c;并且现在的大多数大型语言模型均为基于深度学习的“黑箱模型”&#xff0c;几乎不具有可解释性和可控性&#xff0c;因此&…

「SAP ABAP」OPEN SQL(四)【FROM语句】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

CIMCAI port ai shipping ai artificial intelligence smart port

上海人工智能独角兽中集集团高科技中集飞瞳&#xff0c;是全球应用落地最广&#xff0c;规模最大&#xff0c;最先进的的港航人工智能高科技企业&#xff0c;工业级成熟港航人工智能产品全球规模化落地应用&#xff0c;全球前三大船公司及港口码头应用落地。上海人工智能独角兽…

3.4 按键控制LED灯光敏传感器控制蜂鸣器

按键控制LED灯1.1 按键连接示意图1.2 代码设计1.21 设计思路我们要实现按键控制led&#xff0c;我们需要完成LED和按键驱动代码&#xff0c;但如果把这两部分代码都混在主函数里面&#xff0c;那么代码显得过于杂乱&#xff0c;不容易管理和移植&#xff0c;所以对于这种驱动代…

记一次反射型XSS

记一次反射型XSS1.反射型XSS1.1.前言1.2.测试过程1.3.实战演示1.3.1.输入框1.3.2.插入代码1.3.3.跳转链接2.总结1.反射型XSS 1.1.前言 关于这个反射型XSS&#xff0c;利用的方式除了钓鱼&#xff0c;可能更多的就是自娱自乐&#xff0c;那都说是自娱自乐了&#xff0c;并且对系…

Maxscale读写分离实施文档

Maxscale介绍 MaxScale是maridb开发的一个mysql数据中间件&#xff0c;其配置简单&#xff0c;能够实现读写分离&#xff0c;并且可以根据主从状态实现写库的自动切换。 使用Maxscale无需对业务代码进行修改&#xff0c;其自带的读写分离模块&#xff0c;能够解析SQL语句&…

DD-1/40 10-40mA型【接地继电器】

系列型号&#xff1a; DD-1/40接地继电器 DD-1/50接地继电器 DD-1/60接地继电器 一、 用途及工作原理 DD-1型接地继电器为瞬时动作的过电流继电器&#xff0c;用作小电流接地电力系统高电压三相交流发电机和电动机的接地零序过电流保护。继电器线圈接零序电流互感器(电缆式、母…

Vue动态粒子特效插件(背景线条吸附动画)

目录 效果图&#xff1a; 一、安装&#xff1a; 二、引入 main.js 文件&#xff1a; 三、使用&#xff1a; 四、属性说明&#xff1a; 效果图&#xff1a; 一、安装&#xff1a; npm install vue-particles --save 二、引入 main.js 文件&#xff1a; import VueParticles…

【C++】30h速成C++从入门到精通(多态)

多态的概念多态&#xff1a;通俗来说就是多种心态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。多态的定义及实现多态的构成条件多态是在不同继承关系的类对象&#xff0c;去调用同意函数&#xff0c;产生了不同的行为&#xff0…

C/C++每日一练(20230307)

目录 1. 国名排序 ★★ 2. 重复的DNA序列 ★★★ 3. 买卖股票的最佳时机 III ★★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 ​专栏 1. 国名排序 小李在准备明天的广交会&#xff0c;明天有来自世界各国的客房跟他们谈生意&#xff0c…

结合基于规则和机器学习的方法构建强大的混合系统

经过这些年的发展&#xff0c;我们都确信ML即使不能表现得更好&#xff0c;至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束&#xff0c;我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的&#xff0c;虽然机器学习在解决问题…

spring boot actuator 动态修改日志级别

1 日志级别 Spring Boot Actuator包括在运行时查看和配置应用程序日志级别的功能。您可以查看整个列表&#xff0c;也可以查看单个记录器的配置&#xff0c;该配置由显式配置的日志级别和日志框架给出的有效日志级别组成。这些级别可以是: TRACEDEBUGINFOWARNERRORFATALOFFnu…

ruoyi-pro 代码生成api,swagger扫描不到

背景 重新创建一个新的maven工程&#xff0c;按照芋道源码ruoyi-pro官方文档生成代码后&#xff0c;新的maven工程目录下的接口不能被swagger扫描到&#xff0c;swagger-ui不显示新增的maven工程模块下的api。 解决方法 新增maven工程类中&#xff0c;新增swagger扫描配置类…

JavaWeb--用户登录注册案例

用户登录注册案例4.1 需求分析4.2 用户登录功能4.3 记住我-设置Cookie4.4 记住我-获取Cookie4.5 用户注册功能4.6 验证码-展示4.7验证码-校验4.8 测试目标 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用完善用户登录注册案例的功能 4.1 需求分析 需求说明&#xf…

循环队列的实现

我们知道队列的实现可以用单链表和数组&#xff0c;但是循环链表也可以使用这两种方式。首先我们来看看单链表&#xff1a;首先使用单链表&#xff0c;我们需要考虑循环队列的一些特点。单链表实现循环队列我们要考虑几个核心问题&#xff1a;首先我们要区别 解决 空 和 满 的问…

一文吃透 SpringMVC 中的转发和重定向

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

CameraLink备忘录

首先来看看MDR26的引脚定义 从正面看进去&#xff0c;插头端&#xff0c;放置成倒梯形。 上排&#xff0c;从左到右&#xff0c;1到13&#xff0c; 下排&#xff0c;从左到右&#xff0c;14到26. 插座端&#xff0c;是镜像对称关系。 从正面看进去&#xff0c;插座端&#xf…

C#开发的OpenRA的游戏主界面怎么样创建4

继续游戏主界面创建的主题, 前面已经说到怎么样找到mainmenu.yaml来显示主界面,也说了怎么样找到各个子控件类。 现在就来仔细分析一下,主界面每一部分的功能。 比如下面这个区域的界面是怎么样创建: 要创建这一小部分的界面显示,也是需要做很多的工作。 因为在这里所有UI…