@RefreshScope静态变量注入

news/2025/2/6 9:53:12/

@RefreshScope注解通常用于注入实例变量,而不是静态变量。由于静态变量与类直接关联,刷新操作无法直接影响它们。

如果你需要动态刷新静态变量的值,一种可行的方案是使用一个通过@Value注解注入的实例变量,并在该实例变量的getter方法中返回静态变量的值。这样,在实例变量更新时,可以通过调用getter方法来获取最新的静态变量值。

以下是示例代码:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@Component
@RefreshScope
public class StaticConfig {
    private static String myStaticVariable;

    @Value("${my.property.key}")
    private void setMyStaticVariable(String value) {
        myStaticVariable = value;
    }

    public static String getMyStaticVariable() {
        return myStaticVariable;
    }
}

在上述示例中,setMyStaticVariable()方法使用@Value注解将配置文件中的值注入到myStaticVariable实例变量中。然后,在getMyStaticVariable()方法中,直接返回静态变量的值。

当应用程序接收到刷新请求时(通过Actuator的刷新端点或其他方式),@RefreshScope注解会重新创建StaticConfig的实例,并通过setMyStaticVariable()方法注入最新的配置值。通过调用getMyStaticVariable()方法可以获取最新的静态变量值。

请注意,由于静态变量的生命周期与应用程序的生命周期相同,所以在应用程序启动时会初始化并保持不变,后续配置文件的更改不会自动更新已注入的静态变量值。因此,你仍然需要通过其他方式(如触发刷新操作)来更新静态变量的值。


http://www.ppmy.cn/news/1053509.html

相关文章

Hutool工具包的工具类和方法整理

基础工具类: StrUtil/StringUtils -字符串工具类 判空:isEmpty/isNotEmpty/isAllBlank/isBlank/isNotBlank/isEmptyXXX/isEmptyXXX/isBlankXXX/isNullXXX/hasBlank/hasEmpty/ 转换:blankToXXX/nullToXXX/emptyIfNull/emptyToXXX/toCamelCase/toSymbolC…

15,左值和右值、左引用和右引用

左值和右值、左引用和右引用 左值和右值左引用和右引用 左值和右值 左值是可以被修改并多次引用的表达式或变量,而右值是一次性使用的临时值。 是以等号为判断,如下,a在等号左边是左值,b1在等号右边是右值 int a 0; int b 2;…

C++ vector模拟实现

建议将vector的模拟实现写在头文件中&#xff0c;测试使用部分写在.cpp文件中 vector是类模板&#xff0c;被封装在命名空间中 部分源码&#xff1a;&#xff08;删除某些内容后&#xff09; vector模拟实现的代码&#xff1a; #include<assert.h> namespace djx {tem…

第五讲:常见的BeanPostProcessor

常见的BeanPostProcessor 一、入门Demo二、添加BeanPostProcessor1. AutowiredAnnotationBeanPostProcessor2. CommonAnnotationBeanPostProcessor3. ConfigurationPropertiesBindingPostProcessor 前文我们简单讲了Bean的生命周期&#xff0c;以及生命周期的前后&#xff0c;本…

OpenLayers 瓦片图层放大显示

OpenLayers 瓦片图层放大显示 天地图的影像地图的显示层级最大是18级&#xff0c;超出18级时天地图的影像服务会返回超限的水印瓦片。 在特定的&#xff08;caodande&#xff09;需求场景下&#xff0c;需要将地图层级显示到18级以上&#xff0c;超出18级时仍然使用18级的瓦片进…

Chrome谷歌浏览器修改输入框自动填充样式

Chrome谷歌浏览器修改输入框自动填充样式 背景字体 背景 input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #fff inset !important; }字体 input:-internal-autofill-selected {-webkit-text-fill-color: #000 !important; }

MySQL高级篇——MySQL架构篇2(MySQL的数据目录)

目录 1 MySQL8的主要目录结构1.1 数据库文件的存放路径1.2 相关命令目录1.3 配置文件目录 2 数据库和文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.3.1 InnoDB存储引擎模式2.3.2 MyISAM存储引擎模式 2.4 总结2.5 视图在文件系统中的表示2.6 其他的文件 1 My…

【2023】LeetCode HOT 100——哈希

目录 1. 两数之和1.1 C++实现1.2 Python实现1.3 时空分析2. 字母异位词分组2.1 C++实现2.2 Python实现2.3 时空分析3. 最长连续序列3.1 C++实现3.2 Python实现3.3 时空分析1. 两数之和 🔗 原题链接:1. 两数之和 不妨设 i