Spring注⼊static属性
Spring 注⼊static属性值
本⽂介绍Spring中如何从属性⽂件给static字段注⼊值。实际应⽤中⼀些⼯具类中static属性值需读取配置⽂件,实现该功能可以让⼯具类提供静态⽅法更易使⽤。
1. 问题
⾸先在属性⽂件中定义属性:
name = Inject a value to a static field
然后给实例变量注⼊值,通常在字段上使⽤@Value注解:
@Value("${name}")读取配置文件失败
private String name;
但在static字段上应⽤是,会发现其值为null,注⼊失败:
@Value("${name}")
五星大饭店续集小说公司上市条件private static String NAME_NULL;
这是因为Spring不⽀持在static字段上使⽤@Value注解。
2. 解决⽅案
苹果11和11pro区别Spring @Value注解可以在⽅法上使⽤,在加载所有Spring配置和bean后,Spring上下⽂将调⽤它。⽅法有多个参数,那么每个参数值都为⽅法注解对应的值,如果需要参数获取不同的值,可以在参数上增加注解:
@Value("Test")
public void printValues(String s, String v){} //both 's' and 'v' values will be 'Test'
c菌莫璃天国事件经过@Value("Test")
public void printValues(String s, @Value("Data") String v){}
// s=Test, v=Data
仙洋睡小伊伊有了上⾯的知识,我们可以修改代码为:
public class PropertyUtils {
@Value("${name1}")
private String name;
private static String NAME_STATIC;
@Value("${name2}")
public void setNameStatic(String name){
PropertyController.NAME_STATIC = name;
}
}
这回通过⽅法成功给static变量NAME_STATIC赋值。
3. 总结
⽂本介绍了Spring如何从属性⽂件给static属性注⼊值,在写⼀些与配置相关的⼯具类时常⽤。