亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

spring 如何將配置信息注入靜態(tài)變量的方法

 更新時(shí)間:2018年06月12日 14:06:33   作者:myskies  
本篇文章主要介紹了spring 如何將配置信息注入靜態(tài)變量的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

傳統(tǒng)的錯(cuò)誤作法

application.properties

spring.redis.host=test
@Component
public 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 未注入");
    }
  }

控制臺(tái)打印為: "host 未注入

正確的方法

@Component
public 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);
    }
  }

控制臺(tái)正確的打印了注入的值。

原因猜想

spring進(jìn)行組件掃描,遇到@Component時(shí),初始化對(duì)象 RedisServiceImpl, 初始化過(guò)程中,掃描到@Value注解,將值注入給方法。

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

如果將@Value(),直接加到靜態(tài)私有變量上,則在初始化對(duì)象時(shí),由于靜態(tài)私有變量屬于類,所以spring未對(duì)類進(jìn)行操作 -- 錯(cuò)誤。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論