SpringBoot序列之@Value值静态注入无效问题
前言
SpringBoot中值采用@Value值注入方式的一般都是下面方式注入
@Value("${win.dir}")
private String windir;
@Value("${linux.dir}")
private String linuxdir;
现在由于要将这一个通过判断当前运行环境然后返回路径的方法封装成static方法,因此对于引入的值也要声明成static。
相应的声明变量值也要这样
问题来啦,还像之前那样在上面通过@Value注解方式注入是获取不到值的,博主之前在Java这一块不了解,这次用SpringBoot写项目遇到的坑不少。
private static String windir;
private static String linuxdir;
解决方法
采用set值的方法,然后在屏蔽不正确的静态访问方式警告即可以解决。
private static String windir;
private static String linuxdir;
@SuppressWarnings("static-access") # 抑制不正确的静态访问方式警告
@Value("${win.dir}")
void setWinGallery(String dir){
this.windir = dir;
}
@SuppressWarnings("static-access") # 抑制不正确的静态访问方式警告
@Value("${linux.dir}")
void setLinuxGallery(String dir){
this.linuxdir = dir;
}
上面添加@SuppressWarnings("static-access")
这句话,原因是:屏蔽本该静态访问但使用了对象访问的问题。抑制其警告