java中使用@Value获取值为null问题解决:

问题重现:读取配置文件(**.yml)中的值,获取为null


// 读取配置文件(**.yml)中的值
@Value(value = "${upload.minio.minio_url}")
private static String minioUrl;


问题解析:


java中static/final修饰的变量,通过@Value是获取不到值的。


问题解决方案:


方案一:在变量的seter方法上使用@Value


1.静态变量的setter 方法需要去掉 static  修饰词


2.并需要使用public修饰


3.最后需要注意要在类上加上@Component ,才可以成功注入。


@Value(value = "${upload.minio.minio_url}")
public static void setMinioUrl(String minioUrl) {
 MinioUtil.minioUrl = minioUrl;
}


方案二:通过中间变量赋值:在类上加上@Component


private static String minioUrl;
@Value(value = "${upload.minio.minio_url}")
private String minioUrl2;
@PostConstruct 
public void init() { 
minioUrl = minioUrl2; 
}


总结: 解决方案有两种,都是间接的通过非static的变量获取到值,从而拿到.yml中的值;但是,两种方法中都需要在类上加上@Component。

上一篇:java性能调优及问题追踪--Btrace的使用


下一篇:《AutoCAD 2014中文版超级学习手册》——第2章 图层设置 2.1 设置图层