Spring Cloud Alibaba 使用Nacos作为配置管理中心
为什么需要配置中心?
动态配置管理是 Nacos 的三大功能之一,通过动态配置服务,我们可以在所有环境中以集中和动态的方式管理所有应用程序或服务的配置信息。
动态配置中心可以实现配置更新时无需重新部署应用程序和服务即可使相应的配置信息生效,这极大了增加了系统的运维能力。
服务配置中心
工程改造
继续使用之前的工程:spring-cloud-alibaba-service-user
pom.xml中增加
<!-- nacos 配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 使用 bootstrap -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
将application.yaml变更为bootstrap.yaml,并且增加nacos配置
server:
  port: 8080
spring:
  application:
    name: service-user
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        #指定命名空间 对应dev环境
        namespace: 7e3699fa-09eb-4d47-8967-60f6c98da94a
        #指定分组 案例组
        group: EXAMPLE-GROUP
        #指定集群环境 华南
        cluster-name: HuaNan
        #指定配置文件的类型,默认是 properties
        file-extension: properties
         #前缀默认应用名称${spring.application.name}
        prefix: ${spring.application.name}
获取配置文件的规则为:${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
按照bootstrap.yaml中的配置意思就是,在dev命名空间EXAMPLE-GROUP组中寻找DataId为:service-user.properties的配置文件。
Nacos创建配置文件
进入Nacos Web界面菜单配置管理->配置列表->进入dev命名空间 创建配置文件


业务服务使用配置
NacosConfigController.java
import com.gtiee.example.common.exception.Response;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Nacos Config
 *
 * @author wentao.wu
 */
@RequestMapping(value = "/nacos/config/")
@RestController
public class NacosConfigController {
    @Value("${nacos.config.msg}")
    private String msg;
    @GetMapping("/getMsg")
    public Response<String> getMsg() {
        Response<String> response = new Response<>();
        response.setCode("1");
        response.setMsg(msg);
        return response;
    }
}
重启spring-cloud-alibaba-service-user工程,请求访问接口:http://localhost:8080/nacos/config/getMsg 请求成功返回值为
{
    "code": "1",
    "msg": "这是一条存放在配置中心的消息",
    "errorCode": null,
    "errorMsg": null,
    "result": null
}
代码中的成员变量msg读取的就是配置中心键值对的键为nacos.config.msg的配置。
动态刷新配置
需要动态刷新配置,只需要在NacosConfigController.java中增加类注解@RefreshScope
@RequestMapping(value = "/nacos/config/")
@RestController
@RefreshScope//标注该类对配置进行监听,动态刷新
public class NacosConfigController {
	...省略重复代码
}
增加注解后在Nacos Web界面中对配置中的nacos.config.msg对应值进行修改为: 你好,Nacos!。修改完成后重新发布即可,当Nacos Client接收到Nacos Server推送的配置变更消息则会立即刷新变量。再次访问http://localhost:8080/nacos/config/getMsg 请求成功返回值为
{
    "code": "1",
    "msg": "你好,Nacos!",
    "errorCode": null,
    "errorMsg": null,
    "result": null
}
源码代码存放地址
gitee: https://gitee.com/SimpleWu/spring-cloud-alibaba-example.git
cnblogs: https://www.cnblogs.com/SimpleWu
持续更新目录:https://www.cnblogs.com/SimpleWu/p/15476427.html
Spring Cloud Alibaba 使用Nacos作为配置管理中心的更多相关文章
- Spring Cloud Alibaba(5)---Nacos(配置中心)
		Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ... 
- Spring Cloud Alibaba(4)---Nacos(注册中心)
		Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ... 
- Spring Cloud Alibaba(2)---Nacos概述
		Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ... 
- Spring Cloud Alibaba(3)---Nacos概述
		Spring Cloud Alibaba(3)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ... 
- Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本
		Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ... 
- Spring Cloud Alibaba 整合 Nacos 实现服务配置中心
		在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ... 
- Spring Cloud Alibaba 使用nacos 注册中心
		### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ... 
- Spring Cloud Alibaba 教程 | Nacos(一)
		什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态 ... 
- Spring Cloud Alibaba 之Nacos
		Nacos 技术讲解 一提到分布式系统就不的不提一下 CAP 原则 什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency).可用性(Availability ... 
随机推荐
- 链表 Linked List
			目录 链表介绍 单链表 单链表的应用实例 添加-直接添加到末尾 添加-顺序添加 更新 删除 单链表的面试题 双链表 链表介绍 链表时有序的列表,但是它在内存中是存储如下 小结 链表是以节点的方式来存储 ... 
- IO流实现简单的文件的剪切
			思路: 判断 即将 复制的文件是文件夹还是文件 遍历需要复制的源文件夹 如果是文件夹,就通过流创建一个同样的子文件夹 如果是文件,就复制过去 接下来上代码 public class Demo1 { p ... 
- urllib库爬虫技术从0开学习
			urllib库 urllib库是pytho中一个最基本网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urllopen函数 在python的urllib库中 ... 
- php各个版本curl上传文件的兼容实现
			// 以POST方式提交数据 public function post_data($url, $param, $is_file = false, $return_array = true) { ... ... 
- 在PHP中灵活使用foreach+list处理多维数组
			先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如: $arr = [ [1, 2, [3, 4]], [5, 6, [7, 8]], ]; 我们需要的结果是元素1变成1 ... 
- 一文让你彻底理解having和where的区别
			having子句与where都是设定条件筛选的语句,有相似之处也有区别. having与where的区别: having是在分组后对数据进行过滤 where是在分组前对数据进行过滤 having后面可 ... 
- 鸿蒙内核源码分析(信号消费篇) | 谁让CPU连续四次换栈运行 | 百篇博客分析OpenHarmony源码 | v49.04
			百篇博客系列篇.本篇为: v49.xx 鸿蒙内核源码分析(信号消费篇) | 谁让CPU连续四次换栈运行 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁 ... 
- P6378-[PA2010]Riddle【2-SAT】
			正题 题目链接:https://www.luogu.com.cn/problem/P6378 题目大意 给出\(n\)个点\(m\)条边的一张无向图,图中有\(k\)种颜色的点. 要求每种颜色选择一个 ... 
- WPF进阶技巧和实战07--自定义元素01
			完善和扩展标准控件的方法: 样式:可使用样式方便地重用控件属性的集合,甚至可以使用触发器应用效果 内容控件:所有继承自ContentControl类的控件都支持嵌套的内容.使用内容控件,可以快速创建聚 ... 
- mysql从零开始之MySQL 创建数据库
			MySQL 创建数据库 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 ... 
