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注入属性值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现数字连连消

    Java实现数字连连消

    这篇文章主要为大家详细介绍了Java实现数字连连消,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java OpenCV利用KNN算法实现图像背景移除

    Java OpenCV利用KNN算法实现图像背景移除

    这篇文章主要为大家介绍了Java OpenCV利用K最邻近(KNN,K-NearestNeighbor)分类算法实现图像背景移除的示例代码,需要的可以参考一下
    2022-01-01
  • Java基于二叉查找树实现排序功能示例

    Java基于二叉查找树实现排序功能示例

    这篇文章主要介绍了Java基于二叉查找树实现排序功能,结合实例形式分析了Java二叉查找树的定义、遍历及排序等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Java 入门图形用户界面设计之事件处理下

    Java 入门图形用户界面设计之事件处理下

    图形界面(简称GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,本篇精讲Java语言中关于图形用户界面的事件处理
    2022-02-02
  • Java数据结构之链表、栈、队列、树的实现方法示例

    Java数据结构之链表、栈、队列、树的实现方法示例

    这篇文章主要介绍了Java数据结构之链表、栈、队列、树的实现方法,结合实例形式分析了Java数据结构中链表、栈、队列、树的功能、定义及使用方法,需要的朋友可以参考下
    2019-03-03
  • SpringBoot+Nacos+Kafka微服务流编排的简单实现

    SpringBoot+Nacos+Kafka微服务流编排的简单实现

    本文主要介绍了SpringBoot+Nacos+Kafka微服务流编排的简单实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • SpringBoot整合Mysql和Redis的详细过程

    SpringBoot整合Mysql和Redis的详细过程

    这篇文章主要介绍了SpringBoot整合Mysql和Redis的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • javaweb实战之商城项目开发(二)

    javaweb实战之商城项目开发(二)

    这篇文章主要针对javaweb商城项目开发进行实战演习,利用mybatis创建DAO层,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 一文秒懂idea的git插件跟翻译插件

    一文秒懂idea的git插件跟翻译插件

    idea之类的开发软件真的超级多的插件,今天给大家分享idea的git插件跟翻译插件,感兴趣的朋友跟随小编一起看看吧
    2021-04-04
  • vue+springboot上传文件、图片、视频及回显到前端详解

    vue+springboot上传文件、图片、视频及回显到前端详解

    一般来说vue可以使用axios或者fetch等ajax库发送文件请求,而springboot则可以使用Spring MVC的方式来处理上传文件请求,下面这篇文章主要给大家介绍了关于vue+springboot上传文件、图片、视频及回显到前端的相关资料,需要的朋友可以参考下
    2023-04-04

最新评论