Spring中static變量不能@value注入的緣由

 

今天本想使用@Value的方式使類中的變量得到yml文件中的配置值,然而一直失敗,得到的一直爲null。redis

相似於這樣寫的。spring

public class RedisShardedPool {
private static ShardedJedisPool pool;//sharded jedis鏈接池
@Value("redis.max.total")
private static Integer maxTotal;
……
}工具

後來發現是由於這個變量是static的,而spring不支持依賴注入值到靜態變量。
而後看到有人經過setter注入實現,以下.net

@Component
public class TestValue {component

public static String maxTotal;get

@Value("${redis.max.total}")
public void setDatabase(String maxTotal) {
TestValue.maxTotal= maxTotal;
}
}class

因而我也改爲這種樣子的,可是仍是得到不到值,由於我沒在類上加@Component註解(或者相似的註解),因此spring掃描不到,也就識別不出,@Value仍是會獲得null。因爲我這個是工具類,裏面都是static方法,調用時也都是調用類方法,因此也不須要申明爲component,也不須要經過@Autowired或者@Resource調用。並且,因爲這個類裏面是static方法和屬性,也不能經過調用其餘非static的屬性和方法的方式來得到值。故放棄這種實現,只好本身寫一個讀取配置文件的工具類,經過調用配置文件工具類類方法來解析配置文件中數據。變量

相關文章
相關標籤/搜索