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