国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

spring 如何將配置信息注入靜態變量的方法

2024-07-14 08:41:14
字體:
來源:轉載
供稿:網友

我們學習過將配置信息,通過@Value()的方法注入到對象的變量。這是由于對象是由spring來托管的。那么非spring如果,我們需要在靜態方法中,使用配置文件中的值,又該怎么做呢?

傳統的錯誤作法

application.properties

spring.redis.host=test
@Componentpublic class RedisServiceImpl implements RedisService {  ...  @Value("${spring.redis.host}")  static public String host;    @Value("${spring.redis.port}")  static public Integer port;  ...     static public JedisPool getJedisPool() {    if (RedisServiceImpl.host == null) {      logger.info("host 未注入");    }  }

控制臺打印為: "host 未注入

正確的方法

@Componentpublic class RedisServiceImpl implements RedisService {  ...  static public String host;  static public Integer port;      @Value("${spring.redis.host}")  public void setHost(String host) {    RedisServiceImpl.host = host;  }  @Value("${spring.redis.port}")  public void setPort(Integer port) {    RedisServiceImpl.port = port;  }  ...     static public JedisPool getJedisPool() {    if (RedisServiceImpl.host == null) {      logger.info("host 未注入");    } else {      logger.info("host 值為" + RedisServiceImpl.host);    }  }

控制臺正確的打印了注入的值。

原因猜想

spring進行組件掃描,遇到@Component時,初始化對象 RedisServiceImpl, 初始化過程中,掃描到@Value注解,將值注入給方法。

接著,方法將值傳給了RedisServiceImpl類,故RedisServiceImpl有值 -- 正解。

如果將@Value(),直接加到靜態私有變量上,則在初始化對象時,由于靜態私有變量屬于類,所以spring未對類進行操作 -- 錯誤。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺义区| 大庆市| 镇沅| 临洮县| 射阳县| 临桂县| 稷山县| 额济纳旗| 都兰县| 安宁市| 璧山县| 崇义县| 阜平县| 武清区| 城口县| 增城市| 科尔| 乌兰察布市| 阳朔县| 昭苏县| 瓦房店市| 宿松县| 三明市| 南陵县| 东山县| 屏东市| 镇远县| 余江县| 特克斯县| 昌都县| 运城市| 泉州市| 龙川县| 铁力市| 广宗县| 财经| 纳雍县| 黑河市| 布尔津县| 保山市| 成安县|