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

         今天在调试代码的时候发现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的变量赋值了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值