spring boot 配置动态刷新

本文测试使用的spring cloud版本为:

Dalston.SR1

 

很多朋友只知道spring cloud config可以刷新远程git的配置到内存中,

却不知道spring cloud config的客户端可以脱离服务端使用,

更不知道spring cloud config客户端结合actuator还可以刷新本地的配置文件到内存中。

 

具体做法如下:

1、pom:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.liuyx</groupId><artifactId>test-config-refresh</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!--监控+refresh配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>
复制代码

 

单独引入 spring-boot-starter-actuator或者spring-cloud-starter-config(spring cloud config的客户端)  是不会暴露/refresh端点的,两者同时引入之后才能暴露/refresh端点。

 

2、一般使用spring-cloud-starter-config的文章都会让你在bootstrap里加上配置中心服务端的地址,这里我们要脱离配置中心服务端使用,所以这些配置完全不需要。

 

3、对需要刷新的属性使用@Value注解,同时将类使用@RefreshScope注解进行标记,示例如下:

复制代码
package com.liuyx.test;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
@RefreshScope
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class);}private static int port;@Value("${server.port}")public void setPort(int port){this.port=port;}@RequestMapping("/port")public int port(){return port;}
}
复制代码

这里我的变量是一个static变量,所以只能在非static的set方法上加@Value注解,而不是变量定义行的上方。如果不是静态变量则可以直接写作:

    @Value("${server.port}")private int port;

 

4、application.properties配置

server.port=80
local.test=hello1
management.security.enabled=false

 

5、测试

  1、启动项目,访问 http://localhost/port 显示 80

  2、修改classpath(注意是classpath,即你编译后的class文件所处的目录)下的application.properties将server.port改为801

  

 

  3、发送空post(注意是post)请求到 http://localhost:80/refresh

 

  4、再次访问 http://localhost/port 显示 801 测试成功

 

最后的补充:

  即使结合配置中心服务端使用,该方法也是有效的,所有有效位置的有效配置文件(如git上的,jar内的,jar外的)都会被扫描,并根据一定的顺序进行覆盖,覆盖顺序传送门

 

 

转载于:https://www.cnblogs.com/bevis-byf/p/11491302.html

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

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

相关文章

深度学习撞墙了

来源&#xff1a;机器之心早在 2016 年&#xff0c;Hinton 就说过&#xff0c;我们不用再培养放射科医生了。如今几年过去&#xff0c;AI 并没有取代任何一位放射科医生。问题出在哪儿&#xff1f;近年来&#xff0c;AI 在大数据、大模型的深度学习之路上一路狂奔&#xff0c;但…

Transformer 会接管人工智能?

来源&#xff1a;ScienceAI编辑&#xff1a;绿萝想象一下&#xff0c;你去当地的五金店&#xff0c;在货架上看到一种新的锤子。你听说过这把锤子&#xff1a;它比其他锤子敲得更快、更准确&#xff0c;在过去的几年里&#xff0c;它已经淘汰了许多其他锤子&#xff0c;至少在大…

Nat. Commun.速递:合群者有着相似的大脑活动

来源&#xff1a;集智俱乐部作者&#xff1a;郭瑞东 作者&#xff1a;梁金编辑&#xff1a;邓一雪摘要Convergent processing of the world may be a factor that contributes to social connectedness. We use neuroimaging and network analysis to investigate the associat…

桌面推演技术前沿及发展趋势

来源&#xff1a;蓝海长青智库作者&#xff1a;吕欣、蔡梦思、陈彬&#xff0c;国防科技大学系统工程学院摘要桌面推演通过模拟事件场景及处置过程来提高参演人员的风险感知能力、信息研判能力、指挥决策能力和协同配合能力&#xff0c;被广泛应用于军事作战、应急管理和教育培…

清华大学孙茂松:自然语言处理一瞥,知往鉴今瞻未来

来源&#xff1a;中国人工智能学会作者&#xff1a;孙茂松近日&#xff0c;清华大学人工智能研究院常务副院长孙茂松教授亲手执笔&#xff0c;对自然语言处理的贡献、当前境界与未来挑战进行了深入的探讨。AI科技评论编辑组深有同感&#xff0c;认为此文十分值得一读&#xff0…

前端基础之jQuery

jQuery jQuery的思想&#xff0c;实际上很简单&#xff0c;八个字可以概括&#xff1a;选取元素&#xff0c;对其操作。 元素选取的表达式遵循 CSS 以及 XPath 的标准。选取结果可以是一个或多个&#xff0c;后面的操作针对所有被选取的元素。多个连续的操作可以用“链式”实现…

美国自动驾驶监管里程碑:新法规允许自动驾驶汽车取消方向盘

来源&#xff1a;AI前线编译&#xff1a;刘燕NHTSA 表示&#xff0c;这一新规迈出了“历史性”的一步&#xff0c;确保为配备自动驾驶系统的车辆的乘客保持同样高水平的乘员碰撞保护。这可以视为美国自动驾驶监管的一个里程碑。InfoQ 3 月 11 日消息&#xff0c;根据路透社的报…

DataTable实现分组

有时候我们从数据库中查询出来数据之后&#xff0c;需要按照DataTable的某列进行分组&#xff0c;可以使用下面的方法实现&#xff0c;代码如下&#xff1a; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using…

城市大脑的定义与理论基础综述

本文发表于2022年2月下旬的《中国建设信息化》&#xff0c;作者杜青峰 刘锋 任伟阳1 前言2015以来&#xff0c;城市大脑的概念和定义首次提出后。随着城市大脑领域在理论研究和产业实践上的探索和进展,城市大脑已经成为前沿科技领域和智慧城市建设领域的新热点,到2022年&…

线程实现模型

线程实现模型 线程实现模型主要分为&#xff1a;用户级线程模型&#xff0c;内核级线程模型和两级线程模型。他们的区别在于线程与内核线程之间的对应关系。 以下我们将分析这三种线程实现模型的特点&#xff1a; 用户级线程模型 &#xff08;1&#xff09;多对一关系 用户级线…

逆生长!小鼠「逆龄疗法」登Nature子刊,有望用于人类

来源&#xff1a;机器学习研究组订阅一种新的「逆龄疗法」在小鼠身上显示出希望的曙光&#xff01;最近&#xff0c;美国索尔克生物研究所的科学家运用细胞再生疗法&#xff0c;将「山中因子」注入小鼠&#xff0c;通过多组实验证明&#xff1a;仅数个月&#xff0c;小鼠年轻多…

消息中间件那些事--RabbitMQ

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件&#xff0c;如老牌的ActiveMQ、RabbitMQ&#xff0c;炙手可热的Kafka&#xf…

中国联通李福昌:探索无线连接的未来

来源&#xff1a;C114通信网文&#xff1a;李福昌无线技术在当今社会中发挥着重要的作用&#xff0c;特别是5G商用以来&#xff0c;无线技术的应用从以个人为主扩展到面向生产和社会&#xff0c;逐步践行“5G改变社会”的目标。展望未来&#xff0c;面向6G&#xff0c;无线连接…

听完411头猪的哼哼,他们找到了理解“猪语”的算法 | Scientific Reports

图片来源&#xff1a;Pixabay来源 哥本哈根大学翻译 闭诗林编辑 魏潇我们现在可以解读猪的情绪了。一个国际研究小组利用猪从出生到死亡的生命过程中收集到的数千份录音&#xff0c;首次在其一生各个阶段的大量场景下&#xff0c;将猪的呼噜声转化为了真实的情绪。这项研究由…

弄懂goroutine调度原理

goroutine简介 golang语言作者Rob Pike说&#xff0c;“Goroutine是一个与其他goroutines 并发运行在同一地址空间的Go函数或方法。一个运行的程序由一个或更多个goroutine组成。它与线程、协程、进程等不同。它是一个goroutine“。 goroutine通过通道来通信&#xff0c;而协程…

JVM-类加载原理

写在前面 我们知道我们编写的java代码&#xff0c;会经过编译器编译成字节码文件&#xff08;class文件&#xff09;&#xff0c;再把字节码文件装载到JVM中&#xff0c;映射到各个内存区域中&#xff0c;我们的程序就可以在内存中运行了。那么字节码文件是怎样装载到JVM中的呢…

2022年斯坦福AI Index公布:中美主导跨国研究,专利、投资金额暴增

来源&#xff1a;学术头条当地时间 3 月 16 日&#xff0c;斯坦福大学以人为本人工智能研究所&#xff08;StanfordHAI&#xff09;正式发布了《2022 年人工智能指数报告》&#xff08;Artificial Intelligence Index Report 2022&#xff09;。这是该机构发布的第五份年度报告…

中国传感器规模将超7000亿元:2022最全面深入的产业分析

来源&#xff1a;前瞻经济学人整理&#xff1a;动感传感本文整理自前瞻经济学人的传感器产业报告&#xff0c;作为国内领先的咨询机构&#xff0c;前瞻经济学人的研报分析深度和数据丰富程度&#xff0c;都首屈一指。主要有如下几部分内容&#xff1a;•2022年中国传感器行业市…

强化学习教父Richard Sutton新论文探索决策智能体的通用模型:寻找跨学科共性...

来源&#xff1a;人工智能AI技术 论文虽然有些难懂&#xff0c;但或许是一个新的研究方向。强化学习和决策多学科&#xff08;Multi-Disciplinary Conference on Reinforcement Learning and Decision Making, RLDM&#xff09;的重要前提是&#xff0c;随着时间的推移&#xf…

IO模型(epoll)--详解-01

写在前面 从事服务端开发&#xff0c;少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要&#xff0c;nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。 本文会从网卡接收数据的流程讲起&#xff0c;串联起CPU中断、操作系统进程调度…