为什么需要配置中心?

动态配置管理是 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作为配置管理中心的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. Spring Cloud Alibaba 整合 Nacos 实现服务配置中心

    在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ...

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

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

  8. Spring Cloud Alibaba 教程 | Nacos(一)

    什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态 ...

  9. Spring Cloud Alibaba 之Nacos

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

随机推荐

  1. 获取docker镜像的tag列表

    已nginx为例 命令如下 wget -q https://registry.hub.docker.com/v1/repositories/nginx/tags -O - | sed -e 's/[] ...

  2. Spirit带你了解CSS各个方向的居中方案

    水平居中和垂直居中的方案 先看HTML的骨架 后面的代码都是基于这个来写的 <!DOCTYPE html> <html lang="en"> <hea ...

  3. Ubuntu18.04安装jenkins

    官网参考指引:https://pkg.jenkins.io/debian-stable/ wget -q -O - https://pkg.jenkins.io/debian-stable/jenki ...

  4. mysql允许别人通过ip访问本机mysql数据

    要想允许别人通过ip访问本机mysql数据库,首先要是本机的mysql允许别的ip访问,也就是授权:其次别人的代码里,要写对本机的ip. 一.本机mysql的授权操作 1.cmd 进入控制台 2.输入 ...

  5. ios web 媒体查询兼容

    原文:https://blog.csdn.net/dear_zx/article/details/82785250 防止链接丢失,复制一下 兼容iphone4/4s: @media (device-h ...

  6. CF891B-Gluttony【构造】

    正题 题目链接:https://www.luogu.com.cn/problem/CF891B 题目大意 给出\(n\)个数字互不相同的一个序列\(a\),求它的一个排列\(b\),使得选出任意一个\ ...

  7. IDEA快捷键(未使用)

    1.ctrl Ctrl + Y 删除光标所在行 或 删除选中的行 Ctrl + W 递进式选择代码块.可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 Ctrl + E 显示最近打 ...

  8. python简单操作excel

    python操作excel 写入excel # 写入excel import xlwt # 创建xls对象 wb = xlwt.Workbook() # 新增两个表单页(sheet1) sh1 = w ...

  9. 【k8s】使用k8s部署一个简单的nginx服务

    名词解释 Namespace 表示命名空间 Deployment 表示pod发布 Service 表示多个pod做为一组的集合对外通过服务的表示 kubectl 是k8s的命令行操作命令,可以创建和更 ...

  10. Springboot在有锁的情况下如何正确使用事务

    1. 概述 老话说的好:想要赚钱,就去看看有钱人有什么需求,因为有钱人钱多,所以赚的多. 言归正传,在Java项目的研发中,"锁"这个词并不陌生,最经典的使用场景是商品的超卖问题. ...