普通属性:
一般我们把配置文件的值注入到类里面的属性使用@value注解就可以了:
@Value("${ecg.token.url}")
private String tokenUrl;
这是因为spring 会初始化这个类,当然也会把类的属性准备好。
static属性:
然而上面的方法再 static属性就不起作用,只要你加了@Component类似的注解,照样会给你初始化这个类和类里面的属性,然而static属性是可以通过类名直接调用的,spring不会管到static属性。
所以我们只能把@Value加到非static属性上,让@Value跟随类在spring容器的初始化而初始化。所以我们就在set方法上来注入吧。
private static String tokenUrl;
@Value("${ecg.token.url}")
public void setTokenUrl(String tokenUrl) {
EcgUtil.tokenUrl = tokenUrl;
}
这个set方法肯定会在类初始化的时候执行一遍,因为有@Value注解要注入值,然后把值传给静态属性。
注:这个set方法千万不能用,static方法,道理一样,spring 管不到静态的属性和方法,所以执行不到静态的set方法。