今天在调试代码的时候发现SpringBoot中使用@Value()给变量赋值,给普通变量赋值是可以的,但是给静态变量即static变量赋值的时候,读取不到相应的值,如果是字符串会读取为null,数字值会读取为0.网上查了一下才发现不能直接给static变量赋值。
1、SpringBoot中使用@Value()给普通变量注入值:
1 在application-dev.properties 配置文件有如下配置: 2 3#TOKEN过期时间 4expireDate=180000
给普通变量赋值时,直接在变量声明之上添加@Value()注解即可,如下所示:
1@Value("${expireDate}") 2private long expireDate;
当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的,虽然没有编译和运行上的报错,经调试可知这种注解方式读取的值会为0.
2、可以使用set()方法赋值:
1其中需要在类上加入@Component注解,方法名(例如setExpireDate)和参数名(例如tokenExpireDate)可以任意命名,如下所示: 2 3 4private static long expireDate; 5@Value("${expireDate}") 6 public void setExpireDate(Long tokenExpireDate){ 7 expireDate = tokenExpireDate; 8 }
这样就可以给static的变量赋值了。