SpringBoot使用@Value给静态变量注入值,不能正确读取相应的值

Easter79
• 阅读 951

今天在调试代码的时候发现SpringBoot中使用@Value()给变量赋值,给普通变量赋值是可以的,但是给静态变量即static变量赋值的时候,读取不到相应的值,如果是字符串会读取为null,数字值会读取为0.网上查了一下才发现不能直接给static变量赋值。

1、SpringBoot中使用@Value()给普通变量注入值:

 在application-dev.properties 配置文件有如下配置:

#TOKEN过期时间
expireDate=180000

给普通变量赋值时,直接在变量声明之上添加@Value()注解即可,如下所示:

@Value("${expireDate}")
private long expireDate;

当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的,虽然没有编译和运行上的报错,经调试可知这种注解方式读取的值会为0.

2、可以使用set()方法赋值:

其中需要在类上加入@Component注解,方法名(例如setExpireDate)和参数名(例如tokenExpireDate)可以任意命名,如下所示:

    
private static long expireDate;
@Value("${expireDate}")
    public void setExpireDate(Long tokenExpireDate){
        expireDate = tokenExpireDate;
    }

这样就可以给static的变量赋值了。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
似梦清欢 似梦清欢
3年前
Linux shell(2)
1.变量以固定名称存放的可能变化的值,可以提高脚本的适应能力,方便脚本执行中重复使用某个值。定义/赋值变量格式为:变量名变量值注意事项:若指定变量已存在,则相当于重新给变量赋值;等号两边无空格;变量名区分大小写;变量名不能以数字开头,不使用关键字和特殊字符。root@localhostX1//定义变量
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
001 Python中的变量和字符串
1.Python“变量”更像“名字”变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable)。在大多数语言中,都把这种行为称为“给变量赋值”或“把值存在变量中”。不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值
Stella981 Stella981
3年前
Lua 学习记录
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开赋值语句右边的值会依次赋给左边的变量a,b  1,2赋值语句会先计算右边所有的值然后再执行赋值操作x  1;y  2x, y  y, x变量个数\值的个数按变量个数补足nil变量个数<值的个数多余的值会被忽略a
Wesley13 Wesley13
3年前
ES6新语法(二)
1.解构在ES6中,可以使用解构从数组和对象提取值并赋值给独特的变量,即将数组或对象中的值,拆成一个一个变量。解构:自动解析数组或对象中的值,并赋值给指定的变量。、1.1数组解构vararr3,4,5;vara,b,carr;
Stella981 Stella981
3年前
SpringBoot使用@Value给静态变量注入值,不能正确读取相应的值
今天在调试代码的时候发现SpringBoot中使用@Value()给变量赋值,给普通变量赋值是可以的,但是给静态变量即static变量赋值的时候,读取不到相应的值,如果是字符串会读取为null,数字值会读取为0.网上查了一下才发现不能直接给static变量赋值。1、SpringBoot中使用@Value()给普通变量注入值:在applica
Wesley13 Wesley13
3年前
C#值类型赋值与引用类型的赋值
 在C中,数据类型大致可以分为两类,一类是值类型,一类是引用类型。初学者往往会被类型之间的相互赋值搞的很迷惑,尤其是引用类型变量的相互赋值。现在举2个例子,来一一说明。值类型变量的赋值: 值类型变量中保存的是实际数据,在赋值的时候只是把数据复制一份,然后赋给另一个变量。例子1:         intvar12;         
Stella981 Stella981
3年前
HTML5之SessionStorage本地存储
此对象主要有两个方法:保存数据:sessionStorage.setItem(Key,value);读取数据:sessionStorage.getItem(Key);Key:表示你要存入的键名称,此名称可以随便命名,可以按照变量的意思来理解。Value:表示值,也就是你要存入Key中的值,可以按照变量赋值来理
Stella981 Stella981
3年前
Lua学习笔记
\TOC\Lua学习笔记(整理的runoob加自己的见解)注意事项Lua中变量没有预定义类型,每个变量可以包含任意类型的值,要用就直接赋值一种数据类型的值nil类型就nil一个值,表示变量是否被赋值,变量赋值成nil也表示删除变量使用Type(
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k