SpringBoot的@Value给静态变量注入application.properties属性值

 更新时间:2023年05月19日 08:34:18   作者:长安明月  
这篇文章主要介绍了SpringBoot的@Value给静态变量注入application.properties属性值,Spring是一个开源的框架,主要是用来简化开发流程,通过IOC,依赖注入(DI)和面向接口实现松耦合,需要的朋友可以参考下

一、问题描述

如果在 SpringBoot 项目中的 application.properties 配置了某个属性(假如属性名为 test.key),我们可以在 controller 层或 service 层使用 @Value 标签获取属性值,如下代码所示。

package com.test.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
    @Value("${test.key}")
    public String testKey;
}

也可以在一个 Java 文件中,打上 @Component 标签,再使用上述 @Value 标签,同样可以获取到配置文件中的属性值。

但是,如果项目中需要给静态变量注入配置文件中的属性值的话(也就是,给 static 修饰的变量做 @Value 注入),发现变量值为 null。示例代码如下所示。

@Value("${test.key}")
    public static String testKey;

上述代码,静态变量并未成功注入值。

@Value 只能给普通变量做值注入。那么如何给静态变量做值注入呢?

二、解决方法

在类名上加 @Component 注解(如果 Java 文件是 controller 或 service 这些已经被 Spring 注入管理的类的话,则不需要再额外打该标签)使用 setXXX(abc) 方法,并在 setXXX(abc) 方法上加上 @Value 注解。如下代码示例。

package com.test.utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class SignUtil {
    public static String filepath = null;
    @Value("${filepath}")
    public void setFilePath(String filepath) {
        log.info("静态变量 filepath 赋值:[{}]", filepath);
        SignUtil.filepath = filepath;
    }
}

备注:

如果是 IDEA 为静态变量生成的 set 方法,会在方法上带上 static 修饰符,这样是不行的,需要去掉 static 修饰符。

到此这篇关于SpringBoot的@Value给静态变量注入application.properties属性值的文章就介绍到这了,更多相关SpringBoot的@Value注入属性值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea为java程序添加启动参数的问题解析(program arguments,vm arguments,Environment variable)并在程序中获取使用

    idea为java程序添加启动参数的问题解析(program arguments,vm arguments,Envi

    这篇文章主要介绍了idea为java程序添加启动参数的问题解析(program arguments,vm arguments,Environment variable)并在程序中获取使用,本文给大家分享问题描述及解决方法,需要的朋友可以参考下
    2023-09-09
  • Java判断绝对值的方法总结

    Java判断绝对值的方法总结

    在本文中作者为大家分享了两种Java判断绝对值的方法,对此有兴趣的朋友可以和小编一起学习下。
    2018-02-02
  • Java并发编程之ConcurrentLinkedQueue源码详解

    Java并发编程之ConcurrentLinkedQueue源码详解

    今天带小伙伴们学习一下Java并发编程之Java ConcurrentLinkedQueue源码,本篇文章详细分析了ConcurrentLinkedQueue源码,有代码示例,对正在学习java的小伙伴们很有帮助哟,需要的朋友可以参考下
    2021-05-05
  • java数据结构关于栈的实例应用

    java数据结构关于栈的实例应用

    大家好,本篇文章主要讲的是java数据结构关于栈的实例应用,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • JPA 查询原生SQL转换VO对象方式

    JPA 查询原生SQL转换VO对象方式

    这篇文章主要介绍了JPA 查询原生SQL转换VO对象方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java正则表达式如何匹配特定html标签内的内容

    Java正则表达式如何匹配特定html标签内的内容

    这篇文章主要给大家介绍了关于Java正则表达式如何匹配特定html标签内的内容的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java LinkedList实现班级信息管理系统

    Java LinkedList实现班级信息管理系统

    这篇文章主要为大家详细介绍了Java LinkedList实现班级信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 关于Java大整数运算之BigInteger类

    关于Java大整数运算之BigInteger类

    这篇文章主要介绍了关于Java大整数运算之BigInteger类,BigInteger提供高精度整型数据类型及相关操作,所有操作中,都以二进制补码形式表示,需要的朋友可以参考下
    2023-05-05
  • spring cloud gateway使用 uri: lb://方式配置时,服务名的特殊要求

    spring cloud gateway使用 uri: lb://方式配置时,服务名的特殊要求

    这篇文章主要介绍了spring cloud gateway使用 uri: lb://方式配置时,服务名的特殊要求,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • java如何从不规则的字符串中截取出日期

    java如何从不规则的字符串中截取出日期

    这篇文章主要介绍了java从不规则的字符串中截取出日期的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论