在运行时在Spring Cloud Config中刷新属性配置

在本系列Spring Cloud Config的教程系列中,我们将讨论在运行时刷新属性配置的过程,我们将使用Spring Boot致动器/refresh端点进行/refresh 。 此外,我们还将研究使用@RefreshScope注释刷新@Value属性。

在我的Spring Cloud Config的上一教程中 ,我们使用发现服务器和发现客户端建立了一个云配置服务,并成功创建了一个示例,以在具有GIT支持的存储的分布式环境中读取应用程序配置属性。在这里,我们将继续进行演示运行时在Spring Cloud Config中刷新属性配置的功能。

在本文中,我们将只专注于刷新配置属性。 因此,我们将不会使用与发现服务器相关的配置。 我们将有一个配置服务器,用于从GIT存储库和带有执行器项目的配置客户端中加载属性。

刷新属性的不同方法

刷新配置属性的一种简单方法是使用spring boot促动器提供的/refresh端点,但这是一个手动过程,需要针对所有实例进行触发。另一种方法是/bus/refresh与spring-cloud-bus和在这种情况下,所有实例都订阅一个事件,并且一旦触发该事件,所有配置属性都将通过Spring Cloud Bus广播自动刷新。刷新这些属性的第三种方法是通过连接VCS。 在本文中,我们将讨论弹簧启动执行器的刷新端点。

Spring Cloud Config Server实施

在上一篇文章中,我们已经为该实现做好了准备。 在这里,让我们简要地讨论一下。 我们在配置服务器和Spring Boot主应用程序中定义了以下application.properties,它将REST端点公开为http:// localhost:8888,以供客户端获取配置属性。

application.properties

server.port=8888
spring.cloud.config.server.git.uri=https://github.com/only2dhir/config-repo.git

SpringCloudConfigExampleApplication.java

package com.devglan.springcloudconfigexample;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;@SpringBootApplication
@EnableConfigServer
public class SpringCloudConfigExampleApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudConfigExampleApplication.class, args);}
}

我们在https://github.com/only2dhir/config-repo.git上定义了外部配置属性。在这里,我们为活动配置文件的本地和全局属性定义了属性。

Spring Cloud Config客户端实施

对于客户,我们有以下bootstrap.properties defined.This是我们在以前的应用程序定义的相同文件在这里

bootstrap.properties

spring.application.name=spring-cloud-config-client
spring.profiles.active=local
#spring.cloud.config.uri=http://localhost:8888

使用/ refresh端点刷新配置属性

/refresh端点仅刷新使用@ConfigurationProperties注释的那些属性,这意味着它不刷新在应用程序初始化期间初始化的那些属性。 例如,我们定义了以下配置类,该类读取具有随机前缀的属性

package com.devglan.springcloudconfigclient;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix="random")
public class PropertyConfiguration {private String property;public String getProperty() {return property;}public void setProperty(String property) {this.property = property;}
}

我们有以下控制器类,该类使用以random为前缀的属性,并且还读取以@Value注释的属性

@RestController
public class DemoController {@Value("${test.property}")private String testProperty;@Value("${test.local.property}")private String localTestProperty;@Autowiredprivate PropertyConfiguration propertyConfiguration;@RequestMapping("/")public String test() {StringBuilder builder = new StringBuilder();builder.append("global property - ").append(testProperty).append(" || ").append("local property - ").append(localTestProperty).append(" || ").append("property configuration value - ").append(propertyConfiguration.getProperty());return builder.toString();}
}

对于端点http:// localhost:8080 / spring-cloud-config-client /,将输出以下内容。

现在让我们更改定义的配置根据企业的性质spring-cloud-config-client-local.properties如下。

test.local.property=test local property changed
random.property=random property changed

现在,我们将调用执行器的http:// localhost:8080 / spring-cloud-config-client / refresh POST方法来刷新属性。 以下是具有更新属性的响应。

现在,如果我们点击http:// localhost:8080 / spring-cloud-config-client /,我们可以看到来自带有@ConfigurationProperties注释的类的属性已经更新,但是带有@Value注释的属性尚未更新,因为这是初始化的在应用程序启动期间

要更新使用@Value注释的属性,我们需要使用@RefreshScope注释该类。 因此,这里我们将使用@RefreshScope注释控制器类并重新启动客户端应用程序。再次重新启动后,我们将在属性文件中进行更改并将更改推送到git。 这次,我们两次向属性值附加了字符串,然后再次调用了刷新端点。 现在,如果我们访问URL http:// localhost:8080 / spring-cloud-config-client /,我们可以发现用@Value和@ConfigurationProperties注释的配置属性都已更新。

翻译自: https://www.javacodegeeks.com/2018/03/refresh-property-config-at-runtime-in-spring-cloud-config.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pythonnumpy教程_Python学习教程:通俗易懂的Numpy入门教程

Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pandas也是基于numpy构建的,机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。目录如何构建numpy数组如何观察数…

css hack技巧_5种减少Hack的编码技巧

css hack技巧在本文中,我们将探讨五种方法,这些方法可以使用有效的编码来帮助垃圾回收器花费更少的CPU时间分配和释放内存,并减少GC开销。 较长的GC通常会导致我们的代码在回收内存时停止(也称为“停止世界”)。 一些…

mysql数据库全备_MySQL innobackupex全备是指什么

MySQL innobackupex全备是指什么发布时间:2020-06-03 10:10:31来源:51CTO阅读:133作者:三月下文主要给大家带来MySQL innobackupex全备是指什么,希望这些内容能够带给大家实际用处,这也是我编辑MySQL innob…

数组初始化使用(写)new与不使用(不写)new

首先,数组初始化时,写不写new没有区别的。int arr[] new int[]{ 3, 9, 8};或者int[] arr {3,9,8};编译器遇到 int a[] {3, 8, 9}; 会编译成和 int a[] new int[] {3, 8, 9}; 完全一样的中间代码。 ①不同于String类。String由于实现了常量池&#xf…

Java数组(2)--一维数组

一、一维数组的(声明赋值)初始化 声明:type var[]; 或 type[] var;(示例:int[] age;) 初始化: ①动态初始化:声明且为数组元素分配空间,与赋值的操作分开进行 int[] ar…

Java数组(3)--二维(多维)数组

二维数组相当于一维数组的元素是一维数组 一、二维数组声明赋值初始化 动态初始化① int[][] arr new int[3][2];定义了名称为arr的二维数组 二维数组中有3个一维数组 每一个一维数组中有2个元素 一维数组的名称分别为arr[0], arr[1], arr[2] 给第一个一维数组1脚标位赋值为…

workflow java_workflow java实现的activity工作流实例 Develop 238万源代码下载- www.pudn.com...

文件名称: workflow下载收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 134 KB上传时间: 2014-09-18下载次数: 3提 供 者: 张华详细说明:java实现的activity工作流实例 -java activity文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉)…

使用OAuth 2 / OpenID Connect的SSO的Spring Boot 2本机方法

这篇文章是3篇系列文章的最后一部分,该系列文章探讨了如何为基于Spring Boot 2的应用程序启用OAuth2提供程序SSO。 3个帖子是: 引导兼容OpenID Connect的OAuth2授权服务器/ OpenID提供程序的方法 与OAuth2授权服务器/ OpenID提供程序集成的旧版Spring …

实现任意行数的杨辉三角

public class JavaTest {public static void main(String[] args) {//放置杨辉三角的数组&#xff0c;可通过更改new int[n][]中n的值以获取不同行数的杨辉三角int[][] yangItem new int[10][];//获取杨辉三角数组中每个元素的值for (int i 0;i < yangItem.length;i){//当…

java excel sheet页_Java导出Excel Sheet页

1、问题背景导出Excel表格时&#xff0c;首先要生成Sheet页&#xff0c;下面将介绍如何生成Sheet页2、实现源码/**** Project:* Title:ExcelExport.java* Package:report.utils* Description:* Author:YouHaiDong* Date:2015年11月2日 下午6:29:22* Version:*/package report.u…

鸿蒙与安卓系统简单对比,绝非追求三分天下。

鸿蒙是面向5G物联网、面向全场景的分布式操作系统&#xff0c;其不是安卓系统的分支或修改而来的&#xff0c;与安卓、iOS是不一样的操作系统。鸿蒙将打通手机、电脑、平板、电视、电器设备、工业自动化控制、无人驾驶、车机设备 、智能穿戴统一成一个操作系统&#xff0c;并且…

(0.1)鸿蒙HarmonyOS开发工具DevEco Studio设置

1、打开设置操作框 2.1主题设置&#xff08;可以工具自己的喜好设置主题&#xff09; 2.2设置字体 2.3设置注释 2.4设置提示语句忽略大小写&#xff08;输入小写时&#xff0c;提示语句也会出现大写的关键字等&#xff09; 2.5设置自动导包&#xff08;不用导包&#xff0c;工具…

向Java最佳专家的全球专家学习Java

Java with the Best Virtual Conference是您学习微服务&#xff0c;Java 9&#xff0c;Kubernetes以及其他Java的指南&#xff01; 将于4月17日至18日收听&#xff0c;收听来自Pivotal&#xff0c;RedHat&#xff0c;Microsoft&#xff0c;Oracle和Netflix等公司的行业领导者进…

(0.2)HarmonyOS鸿蒙开发工具DevEco Studio工程文件目录结构

1、基本不会去动添加修改的一些文件夹 2、主要直接使用操作的文件夹entry 3、开发操作main文件夹 也就是说&#xff0c;我们其实主要就只要用到java&#xff0c;resources两个文件夹和config.json一个文件。把代码放java文件夹里面&#xff0c;把开发用到的图片视频等资源放res…

(0.3)HarmonyOS鸿蒙开发工具DevEco Studio 模拟器使用

1、登录华为账号 2、打开模拟器 3、选择模拟器 4、将程序运行在模拟器 5、当下面的building进度条完成后

(1.1)HarmonyOS鸿蒙中Ability概念及意义

1、简单理解&#xff1a;在鸿蒙中&#xff0c;可以简单理解为&#xff0c;打开APP后一个页面为一个Ability&#xff0c;而一个页面里面又有很多子页面&#xff08;切片、片段&#xff09;为AbilitySlice。 2、意义 一个Ability对应一个Hap包&#xff0c;一个APP则是由多个Hap包…

Java实现冒泡排序动画展示

原理&#xff1a;每次比较两个相邻的元素&#xff0c;将较大&#xff08;较小&#xff09;的元素交换至右边。 思路&#xff1a;每次冒泡排序操作都会将相邻的两个元素进行比较&#xff0c;看是否满足大小关系要求&#xff0c;如果满足&#xff0c;就根据需要&#xff08;从小…

使用Zipkin和Sleuth进行SpringBoot微服务跟踪

在本文中&#xff0c;我们将了解使用Zipkin和Spring cloud sleuth框架的微服务分布式跟踪。 尽管微服务具有自身的挑战&#xff0c;但微服务是出色的架构。 复杂的微服务架构具有与其他微服务的下游和上游依存关系&#xff0c;并且一切都是相互联系的。 在大多数情况下&#x…

log4j性能 slf4j_Log4j 2:性能接近疯狂

log4j性能 slf4j最近&#xff0c;Apache社区中一位受人尊敬的成员尝试了Log4j 2并在Twitter上写道&#xff1a; TheASF &#xff03;log4j2摇摇欲坠 &#xff01; 性能接近疯狂^^ http://t.co/04K6F4Xkaa — Mark Struberg&#xff08;struberg&#xff09; 2013年5月7日 &a…

java 输入人名_Java 读取控制台输入

Java 提供了我们两种读取控制台输入的方法&#xff1a;一、传统方法public class ReadConsoleOld {public static void main(String[] args) throws IOException {BufferedReader reader new BufferedReader(new InputStreamReader(System.in));while(true){String line read…