SpringCloud(Alibaba版)Nacos配置中心
Posted wessonshin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud(Alibaba版)Nacos配置中心相关的知识,希望对你有一定的参考价值。
一、Nacos Config简介
是什么?
-
Nacos:Dynamic Naming and Configuration Service。
-
Nacos:其实就是 Eureka 服务注册中心 + Config 服务配置中心 + Bus消息总线的组合。
二、基础配置
1)build.gradle项目依赖
dependencies { compile group: \'org.springframework.boot\', name: \'spring-boot-starter-web\' compile group: \'org.springframework.boot\', name: \'spring-boot-starter-actuator\' compile group: \'com.alibaba.cloud\', name: \'spring-cloud-starter-alibaba-nacos-config\', version: \'2.1.0.RELEASE\' compile group: \'com.alibaba.cloud\', name: \'spring-cloud-starter-alibaba-nacos-discovery\', version: \'2.1.0.RELEASE\' }
2)为什么要配置两个配置文件?
Nacos 同 Spring Cloud Config 在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置后,才能保证项目的正常启动。Spring Boot 中配置文件的加载是存在优先级顺序的,bootstrap 优先级高于 application。
server: port: 7071 spring: application: name: config-client-nacos cloud: nacos: discovery: server-addr: 127.0.0.1:8848 #指定Nacos服务注册中心地址 config: server-addr: 127.0.0.1:8848 #指定Nacos服务配置中心地址 file-extension: yaml #指定yaml格式的配置(原先GitHub上的配置文件)
spring:
profiles:
active: dev #表示激活开发环境
package org.wesson.cloudalibaba.nacos; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @EnableDiscoveryClient @SpringBootApplication public class ConfigClientNacosApplication { public static void main(String[] args) { SpringApplication.run(ConfigClientNacosApplication.class, args); } }
4)Controller
通过 Spring Cloud 原生注解 @RefreshScope
package org.wesson.cloudalibaba.nacos.controller; 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.RestController; @RestController @RefreshScope // 支持Nacos的动态刷新功能 public class ConfigNacosController { @Value("${config.info}") private String configInfo; @GetMapping("/getInfo") public String getConfigInfo() { return configInfo; } }
5)在Nacos中添加配置信息
理论,Nacos 中的匹配规则
公式:
${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
用例:
config-client-nacos-dev.yaml
注意:严格按照官网公式,不要让 spring.profile.active
为空,不然会出现莫名其妙的问题。
实操,新建配置
小总结
6)测试
启动前需要在 Nacos 客户端配置列表菜单下有对应的yaml配置文件
Step1:
Step2:运行 config-client-nacos 启动类,端口为7071
Step3:调用接口查看配置信息,访问http://localhost:7071/getInfo,结果如下:
成功获取 Nacos 客户端配置列表 config-client-nacos-dev.yaml 配置文件中的内容。
三、自带动态刷新配置
不需要添加任何相关的 Bus 消息总线依赖,直接编辑修改 Nacos 客户端配置列表中的 yaml 配置文件版本发布即可:
点击发布后,会有一个当前值与原始值的对比效果,然后确认发布:
根本不需要重启任何服务以及原先发送的 POST 请求。再次调用查看配置的接口,就会发现配置成功实现动态刷新功能了:
不得不说,阿里巴巴的 Nacos 技术还是还是非常成熟的,相当于完全代替了 Eureka、Config 与 Bus 三个组件。
spring:
cloud:
nacos:
config:
refresh:
enabled: false
以上是关于SpringCloud(Alibaba版)Nacos配置中心的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud - Spring Cloud Alibaba 之 Nacos Config配置中心
SpringCloud(Alibaba版)Nacos配置中心
springcloud+nacos+sentinel+dubbo搭建项目的一些关键配置和依赖