注解@Value注入static属性字段

spring | 2019-12-04 08:50:45

普通属性:

一般我们把配置文件的值注入到类里面的属性使用@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方法。

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号