前言

统一配置管理将各个服务的配置管理起来,如果发生变化,可以主动向服务发送信息。配置管理服务也在nacos中。

配置热更新

在配置列表新建配置

发布后,这个配置已经进入统一配置管理

服务配置拉去

项目先读取nacos的配置文件,然后再读取本地的配置文件。bootstrap.yml文件要比application.yml的优先级高,所以可以把nacos的地址等信息文件内容移到bootstrap.yml

引入nacos配置管理依赖

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

然后新建bootstrap.yml文件,配置nacos信息,然后把application.xml重复的信息删除

spring:
application:
name: demo-user
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml

测试是否能够读取到nacos信息

先查看nacos中的配置是什么样的

名称为demo-user-dev.yaml,内容为

pattern:
dateformat: yyyy-MM-dd HH:mm:ss

启动时报错Param 'serviceName' is illegal, serviceName is blank,因为spring-cloud-dependencies 2020.0.0 版本不在默认加载bootstrap 文件,如果需要加载bootstrap 文件需要手动添加依赖。

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

在controller写一个读取配置文件的方法

    @Value("${pattern.dateformat}")
private String dataformat; @GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}

运行后获得

说明nacos配置文件已经读取到本地

配置热部署

方式一

在@Value的类上添加注解@RefreshScope

@RestController
@RequestMapping(value = "user")
@RefreshScope
public class SysUserController {
@Value("${pattern.dataformat}")
private String dataformat; ...

这样直接去nacos中修改配置,发布后不用重启服务

方式二

使用注解@ConfigurationProperties

新建一个类,专门完成属性加载

package priv.sinoam.demouser.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; /**
* 加载nacos配置类
* @author hasee
*/
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class Pattern { private String dateformat;
}

@Component将其注册成spring的一个bean,prefix和变量名要和配置文件中一致,将代码修改为

@RestController
@RequestMapping(value = "user")
public class SysUserController { @Autowired
private SysUserService sysUserService; @Autowired
private Pattern pattern; @GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern.getDateformat()));
}

这样直接去nacos中修改配置,发布后不用重启服务

多环境配置共享

微服务启动时从nacos读取多个配置文件:

[spring.application.name]-[spring.profiles.active].yaml,即和服务名跟环境有关系

[spring.application.name].yaml,即只和服务名有关系

所以可以将配置文件放在下面这个配置文件中。

所以在nacos新建配置时,使用服务名.yanl即可,在本项目中例如demo-user.yaml

优先级:服务名-active.yaml>服务名.yaml>本地配置

结语

:)

学习spring cloud记录9-nacos深一步学习的更多相关文章

  1. Spring Cloud Alibaba(4)---Nacos(注册中心)

    Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...

  2. Spring Cloud Alibaba(2)---Nacos概述

    Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  3. Spring Cloud Alibaba(5)---Nacos(配置中心)

    Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ...

  4. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  5. Spring Cloud Alibaba(3)---Nacos概述

    Spring Cloud Alibaba(3)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  6. Spring Cloud Alibaba 教程 | Nacos(五)

    扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profile ...

  7. Spring Cloud Alibaba 之Nacos

    Nacos 技术讲解 一提到分布式系统就不的不提一下 CAP 原则 什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency).可用性(Availability ...

  8. Spring Cloud Alibaba 之 Nacos

    Nacos 技术讲解 一提到分布式系统就不的不提一下 CAP 原则 什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency).可用性(Availability ...

  9. 【微服务】使用spring cloud搭建微服务框架,整理学习资料

    写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...

  10. Spring Cloud Alibaba 使用nacos 注册中心

    ### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...

随机推荐

  1. 支付系统扩展:ZKmall开源商城支持跨境多币种结算的开发实践

    于跨境电商平台而言,多币种支付是满足全球消费者支付需求的关键.不同国家和地区的消费者习惯使用各自的货币进行支付,如果平台不支持多币种交易,将极大地限制用户的购买意愿和支付便利性.因此,跨境电商平台必须 ...

  2. 洛谷 - B4276 [蓝桥杯青少年组国赛 2023] 八进制回文平方数 - 题解

    题目传送门 主要思路 首先,这道题范围在 \(10^9\),我们不可能直接从 \(1\) 循环到 \(N\).我们不难看出,这道题是求平方数的八进制是否回文,那些不是平方数的例如 \(2\) 呀,\( ...

  3. DHCP介绍与实现方法

    简介:动态主机配置协议(Dynamic Host Configuration Protocol,缩写:DHCP)是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客 ...

  4. 无耳 Solon Ai MCP,发布工具服务,使用工具服务。效果预览!

    solon-ai-mcp 是 solon-ai 的扩展特性.提供 mcp 协议的支持.通过它,可以方便的发布 Tool Service,方便的使用 Tool Service. 引入依赖包 <de ...

  5. .NET周刊【3月第4期 2025-03-23】

    国内文章 C# 中比较实用的关键字,基础高频面试题! https://www.cnblogs.com/Can-daydayup/p/18784074 文章探讨了C#编程中的关键字,尤其是访问修饰符的种 ...

  6. eolinker脚本代码[Javascript]:脚本(函数)之间传参案例

    场景描述: 有等级卡A.B,依次通过查询A.B,检查A.B下是否会会员,如果有,调整会员身份,没有着执行下一个循环 全部脚本:脚本中红色标注的user即脚本之间的传参 //以下代码为示例代码(支持原生 ...

  7. GPFS并行文件系统部署实践

    环境 ubuntu22.04 试用版下载链接 https://www.ibm.com/cn-zh/products/storage-scale 我的版本:Storage_Scale_Developer ...

  8. SQL Server 2025 中的改进

    SQL Server 2025 中的改进 当我们接近 SQL Server 2025 的首次公开版本时,开始深入探究 Azure SQL DB 如今(已公布和未公布)但在 SQL Server 盒装产 ...

  9. Mybatis 框架课程第二天

    目录 3 基于代理Dao实现CRUD操作 3.1 根据id查询 3.1.1 在持久层接口中添加findById方法 3.1.2 在用户的映射配置文件中配置 3.1.3 在测试类添加测试 3.2 保存操 ...

  10. 夸克浏览器PC端功能体验

    一.下载安装 可以看到目前PC端仅仅支持windows,不支持Mac和Linux. 二.功能介绍 夸克浏览器果然很简洁.清新,左侧栏提供首页.网盘.工具.快传四个选项,中间是搜索栏,底部是可定制的天气 ...