springcloud的配置中心(springcloud没了配置中心服务还能调用吗)

:暂无数据 2026-04-18 06:00:03 0
你有没有想过,springcloud的配置中心的关键突破口,可能就藏在springcloud没了配置中心服务还能调用吗之中?本篇内容将为你验证这个猜想。

本文目录

springcloud没了配置中心服务还能调用吗

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud-Nacos配置管理

前置文章:
一、Spring Cloud-Erueka服务注册&发现
二、Spring Cloud-Nacos服务注册&发现

tips:Ctrl + F定位到所需内容快速阅读吧。

①常规项目:项目启动→读取application.yml配置文件→创建Spring IOC容器→加载Bean;
②Nacos配置中心项目:项目启动→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;
注意 :此处的问题是Nacos server-addr相关配置在application.yml中,所以引入bootstrap.yml配置,来提前加载Nacos配置中心所需配置。
③Nacos配置中心项目:项目启动→读取bootstrap.yml配置文件→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;

注意 :SpringCloud2020及以后的版本默认不启用 bootstrap 配置,我们需要在pom里面显式地引入,以开启bootstrap.yml配置文件读取的支持。

user服务读取配置中心配置三要素:
①spring-application-name:应用名称-userservice;
②spring-profiles-active:配置文件环境-dev(代表开发环境develop);
③file-extension:文件扩展名-yaml;
配置中心处,配置文件完整名称:userservice-dev.yaml

①配置管理→配置列表→

②编写userservice-dev.yaml配置文件

①@Value注解注入配置属性

②方法内读取配置

在对应的@Value注解使用的类上使用@RefreshScope注解

编写Config类:prefix = "pattern" + dateformat,与配置文件pattern.dateformat 对应即可。

配置优先级 :>本地配置;
即:服务名-环境类型.yaml>服务名.yaml>本地配置。
如果配置不同,则合并,相同则优先级高的覆盖优先级低的。

另外:extension-configs的加载后于shared-configs。

以上即为Nacos配置管理的基础内容,感谢阅读。

Spring Cloud Config(统一配置中心)

pom.xml

Application.java

application.yml

测试访问:
pom.xml

bootstrap.yml

注意:如果Eureka端口被修改,则eureka.client的配置不能放到git远端
Server端和Client端的pom.xml加上

测试启动成功后在RabbitMQ上查看bus是否创建了消息队列

docker安装RabbitMQ -

暴露bus-refresh接口,在Server端application.yml加上

在需要刷新配置的地方加上注解@RefreshScope,例如:

测试发送post请求刷新配置:
开源中国gitee的WebHooks目前和SpringCloud Config组件不兼容,所以只能用github的WebHooks

url必须为外网地址,可以使用netapp.cn获取免费隧道

SpringCloud Config组件提供了用于WebHooks的路由叫做monitor

Spring Cloud 使用 Nacos 做配置中心,读取多个配制文件的方式

通过配制 spring.cloud.nacos.config.prefix 可以指定配制文件的前缀,也可以不指定,默认使用 spring.application.name, 下面我们统称为 prefix

Spring Cloud Alibaba Nacos Config 的官方文档中没有提及如何读取多个配制文件,实际上会默认读取:
(${sprefix}.properties) 和 (${sprefix}-${profile}.properties) 这两个文件(只指定一个profile的情况下)
而 spring.profiles.active 是可以指定多个 profile 的,用逗号隔开就行,这样的话实际读取的就是profile数量+1 个配制文件了

实际中可能有这样的需求: 有A,B两个(更多)服务,它们有些配制是一样的,我们希望把这些一样的配制提取到一个公共配制中,那我们可以这样玩:
因为是两个不同的服务,所以 spring.application.name 我们希望是不同的名称, 那么这个时候我们就需要指定 spring.cloud.nacos.config.prefix 了,大概是这样子:
服务A:

服务B:

服务A和服务B使用相同的 spring.cloud.nacos.config.prefix , 这个时候我们需要指定 profile , 大概是这个样子:
服务A:

服务B:

那么我们的配制文件是这样子:

服务A:

服务B:

这个时候我们可以不使用 service.properties 文件,而变成:

springcloudconfig有ui吗

springcloudconfig有ui。
配置中心采用springcloudconfig,c***ul自带ui界面,可以在ui页面进行配置。
SpringCloudConfig是SpringCloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持。

Spring Cloud Config(统一配置中心服务端和客户端)

Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。Spring Cloud Config 是一种用来动态获取Git、SVN、本地的配置文件的一种工具。可以在所有环境中管理应用程序的外部属性。可以与任何语言运行的任何应用程序一起使用。当应用程序通过部署从开发到测试并进入生产时,可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。服务器存储后端的默认实现使用git,可以轻松支持配置环境的标签版本,以及可用于管理内容的各种工具。添加替代实现并使用Spring配置插入很容易。
***隐藏网址***
***隐藏网址***

1.用于外部配置的HTTP,基于资源的API(名称 - 值对或等效的YAML内容)
2.加密和解密属性值(对称或非对称)
3.使用可轻松嵌入Spring Boot应用程序 @EnableConfigServer

1.绑定到 Config Server 并 Environment 使用远程属性源初始化 Spring
2.加密和解密属性值(对称或非对称)

版本说明
SpringBoot:2.1.3.RELEASE
SpringCloud:Greenwich.SR1

引入Spring Cloud Config Server依赖

这里使用Eureka注册中心,所以需要加上

配置很简单 只需要在启动类上加 @EnableEurekaClient 开启Eureka客户端, @EnableConfigServer 开启统一配置中心

可以在私人Gitlab, 码云 , Github 等等创建
我这里是在Github上创建的配置文件,一般都是 yml 或者 properties 配置文件

需要在项目的配置文件中指定连接的仓库,用户名和密码

spring.cloud.config.server.git.uri 就是仓库的访问地址

下面进行测试
先启动Eureka注册中心,在启动统一配置中心

在控制台可以看到 会在临时目录中创建一份配置文件

***隐藏网址***

***隐藏网址***

application :应用名 ,也就是 spring.application.name
label :分支名,默认 master
profile :环境名,环境可以在配置文件的属性名是 env ,不设置也可以

版本说明
SpringBoot:2.1.3.RELEASE
SpringCloud:Greenwich.SR1

引入Spring Cloud Config Client依赖

这里使用Eureka注册中心,所以需要加上

不需要在启动类中加入注解

由于是统一配置中心的客户端,所以需要在yml配置文件中配置

spring.cloud.config.discovery.enabled :开启配置服务发现
spring.cloud.config.discovery.service-id :配置服务实例名称,也就是 Config Server 的应用名
spring.cloud.config.label :是配置分支名,默认是master,可以不配置
spring.cloud.config.profile :环境名,对应 Config Server 的 env

dev :开发环境
test :测试环境
pro :正式环境

场景:当使用Spring Cloud的时候,配置信息一般是从Config Server加载的,为了取得配置信息(比如密码等),需要提早读取配置。因此,把 Config Server 信息放在 bootstrap.yml ,用来加载需要的配置信息

原理: bootstrap.yml 是被一个父级的 Spring ApplicationContext 加载的。这个父级的 Spring ApplicationContext 是先加载的,在加载 application.yml 的 ApplicationContext 之前。

bootstrap.yml ( bootstrap.properties )用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
application.yml ( application.properties ) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

配置完启动就可以读取远程仓库的配置文件了

Spring boot 2.0 消息总线(Spring Cloud Bus) 高可用分布式配置中心 实例

配置中心的客户端要使用bootstrap.yml
bootstrap.yml优先于 application.yml 加载 即 bootstrap.yml加载完后才加载 application.yml

在需要更新的配置类上加@RefreshScope注解,@RefreshScope必须加,否则客户端会收到服务端的更新消息,但是更新不了,因为不知道更新哪里的。

18082: 是统一配置中心的端口
/auth-server/dev 对应远程配置文件的auth-server-dev.yml
/{name}-{profiles}.yml
/{label}/{name}-{profiles}.yml
name : 文件名,一般以服务名来命名
profiles : 一般作为环境标识
lable : 分支(branch),指定访问某分支下的配置文件

***隐藏网址***
修改配置文件并提交到git上

我们发现再不重启服务的情况下就能获取到修改的属性值

只要开启 Spring Cloud Bus 后,不管是对 config-server 还是 config-client 执行/actuator/bus-refresh都是可以更新配置的,
如果有多个客户端,多个客户端都会接收到刷新配置的消息,并刷新配置。

某些场景下(例如灰度发布),我们可能只想刷新部分微服务的配置,此时可通过/actuator/bus-refresh/{destination}端点的 destination 参数来定位要刷新的应用程序。例如:/actuator/bus-refresh/customers:8000,这样消息总线上的微服务实例就会根据 destination 参数的值来判断是否需要要刷新。其中,customers:8000指的是各个微服务的 ApplicationContext ID。destination 参数也可以用来定位特定的微服务。例如:/actuator/bus-refresh/customers:**,这样就可以触发 customers 微服务所有实例的配置刷新。

***隐藏网址***

选择Just the push event.,因为我们只需要push的时候进行回调,然后添加即可

每当我们更新远程配置文件后,push到git后,就会触发Payload URL(配置的是访问刷新配置的地址)

Spring Cloud Config 怎么从配置中心获取配置信息

1.新建一个Spring Boot应用,命名为config-client(随意)
2.pom.xml,主要依赖内容如下:

3.创建 bootstrap.properties 文件,配置服务的基本信息和配置中心服务端信息

spring.application.name :对应配置文件规则中的 {application}
spring.cloud.config.profile :对应配置文件规则中的 {profile}
spring.cloud.config.label :对应配置文件规则中的 {label}
spring.application.uri :配置中心的地址

4.创建TestController

使用 @Value 绑定配置服务中配置的属性,也可以使用Environment对象来获取配置属性。

启动config-server、config-client
***隐藏网址***

springcloud的配置中心感兴趣?别忘了收藏本站,我们会持续更新关于springcloud没了配置中心服务还能调用吗等前沿动态的解读。
本文编辑:admin

更多文章:


concurrenthashmap怎么读(concurrenthashmap的读是否要加锁,为什么)

concurrenthashmap怎么读(concurrenthashmap的读是否要加锁,为什么)

你有没有想过,concurrenthashmap怎么读的关键突破口,可能就藏在concurrenthashmap的读是否要加锁,为什么之中?本篇内容将为你验证这个猜想。

2026年4月19日 21:00

微信小程序是前端还是后端(小程序开发用什么语言)

微信小程序是前端还是后端(小程序开发用什么语言)

下面,我们将通过微信小程序是前端还是后端的概述、小程序开发用什么语言的详解以及总结展望三个部分,为您系统梳理这一主题。

2026年4月19日 20:40

select后面跟什么(数据库中selectfrom.where.各表示什么意思)

select后面跟什么(数据库中selectfrom.where.各表示什么意思)

想知道那些精通select后面跟什么的人,是如何看待数据库中selectfrom.where.各表示什么意思的吗?本篇将为你揭秘他们的思考路径。

2026年4月19日 20:20

mysql三张表关联查询(mysql 三个表怎么全连接查询)

mysql三张表关联查询(mysql 三个表怎么全连接查询)

当大家谈论mysql三张表关联查询时,总免不了提及mysql 三个表怎么全连接查询。它们之间究竟有何玄机?读完本文你便了然于胸。

2026年4月19日 20:00

excel最多支持几线程(excel8个线程是什么意思)

excel最多支持几线程(excel8个线程是什么意思)

有没有这种经历:明明想搞懂excel最多支持几线程,却被excel8个线程是什么意思卡住了脖子?今天这篇文章,就是专治这种“卡脖子”问题的。

2026年4月19日 19:40

编译java程序的命令是?预编译的编译指令

编译java程序的命令是?预编译的编译指令

关于编译指令,您需要知道的几个关键点,尤其是编译java程序的命令是的深入解析,我们都将在这篇文章中涵盖。

2026年4月19日 19:20

正则匹配斜杠(java正则表达式如何匹配反斜杠)

正则匹配斜杠(java正则表达式如何匹配反斜杠)

您是否正在为搞不清正则匹配斜杠和java正则表达式如何匹配反斜杠的关系而烦恼?恭喜,这篇干货就是您的“及时雨”。

2026年4月19日 19:00

json在线网址(怎么将以下json数据转成list集合)

json在线网址(怎么将以下json数据转成list集合)

json在线网址的背后,隐藏着怎样的秘密?怎么将以下json数据转成list集合又在其中扮演了何种角色?带着疑问,我们一起探秘。

2026年4月19日 18:40

停止接种第一剂次(新乡暂停第一剂次新冠疫苗接种(新乡暂停第一剂次新冠疫苗接种的时间))

停止接种第一剂次(新乡暂停第一剂次新冠疫苗接种(新乡暂停第一剂次新冠疫苗接种的时间))

结合最近的趋势来看,停止接种第一剂次的热度持续攀升,而新乡暂停第一剂次新冠疫苗接种(新乡暂停第一剂次新冠疫苗接种的时间)作为其核心组成部分,讨论度更是居高不下。

2026年4月19日 18:20

如何打开json文件怎么打开(pycharm怎么加载json文件)

如何打开json文件怎么打开(pycharm怎么加载json文件)

常言道:“万丈高楼平地起”。理解如何打开json文件怎么打开这座大厦,也必须从pycharm怎么加载json文件这块基石开始。

2026年4月19日 18:00

最近更新

concurrenthashmap怎么读(concurrenthashmap的读是否要加锁,为什么)
2026-04-19 21:00:03 浏览:0
热门文章

order by执行顺序(sql里 where和order by一起使用是怎样的顺序)
2026-03-28 04:40:01 浏览:0
go slice(Golang|切片原理)
2026-03-27 07:20:01 浏览:0
canvas音标(SIZE是什么意思)
2026-03-27 23:20:01 浏览:0
rowing(row的ing形式)
2026-03-27 04:40:01 浏览:0
360度网站模板(什么叫360评估)
2026-03-27 18:00:01 浏览:0
floatleft是什么意思(displayflex和floatleft的区别)
2026-04-17 04:40:03 浏览:0
plsql连接oracle19c客户端(PL**L连接ORACLE需要配置些什么东西总是不能选择数据库)
2026-03-27 12:40:01 浏览:0
标签列表