国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洞头县| 盱眙县| 当雄县| 岳普湖县| 惠东县| 秭归县| 富锦市| 延长县| 宁河县| 顺昌县| 元阳县| 吴堡县| 昭平县| 兴和县| 马关县| 临西县| 尚志市| 禄丰县| 灵宝市| SHOW| 集安市| 宜丰县| 体育| 塘沽区| 五莲县| 漯河市| 六盘水市| 伊金霍洛旗| 苗栗市| 小金县| 永胜县| 庄河市| 惠水县| 富锦市| 开阳县| 祁阳县| 娱乐| 大关县| 日照市| 元氏县| 贺州市|