我們學習過將配置資訊通過@value()
的方法注入到物件的變數中。這是由於物件是由spring
統一託管的(保證了單例模式)。那於對於非spring
託管的類,如果注入注入資料呢?
比如:我們想把配置資訊的值,注入到類的靜態變數中。
spring.redis.host=test
@component
public class redisserviceimpl implements redisservice ")
static public string host;
@value("$")
static public integer port;
...static public jedispool getjedispool()
}
控制台列印為: "host 未注入
@component
public class redisserviceimpl implements redisservice ")
public void sethost(string host)
@value("$")
public void setport(integer port)
...static public jedispool getjedispool() else
}
控制台正確的列印了注入的值。
spring
在啟動時會進行元件掃瞄,打描到redisserviceimpl
時,發現其類使用了@component
註解。於是,初始化物件redisserviceimpl
。初始化過程中,對方法進行掃瞄,當掃瞄到使用@value
註解的方法時,呼叫方法,並注入需要注入的值。
然後:我們使用了乙個小的技巧: 在這個自動執行的方法中,將值設定給了類。進而實現了,在啟動時將值注入
到類的目標。
其實:spring
不對類進行託管,所以也就不可能將值注入到類。所以我們的上述方法,應該描述為:將值注入給方法,然後在方法中,使用傳入的值為類進行資料初始化。
這時,我們也就清楚為什麼使用@value()
註解時,無法將值注入的原因了:
如果將@value()
,直接加到靜態私有變數上,則在初始化物件時,由於靜態私有變數屬於類,所以spring
未對類進行操作 -- 錯誤。
如何將屬性注入到 JPA entity 中
1 定義乙個注入的介面 public inte ce dependencyinjector2 定義乙個實現了注入介面 dependencyinjector 及 beanfactoryaware 的屬性注射器 bean public class autowiredependencyinjector i...
如何檢視Linux的相關配置資訊
如何檢視linux的相關配置資訊 不管是做運維還是dba,在進入乙個linux系統的時候肯定是要了解當前系統的配置情況的,那麼如何檢視呢?總不能把伺服器拆了吧!呵 呵,這裡是有一些命令可以取得的。經過資料搜 索和查詢現總結了如下,以備後查 這裡主要從作業系統型別及版本 cpu 記憶體和硬碟進行說明 ...
lua如何將使用者ip轉為地理位置資訊
有三種方法 第1種 使用 或者其他ip轉換位址,可以轉換,準確,但是請求頻率限制了。第2種 使用lua讀取本地檔案ip庫,這種需要使用二叉樹演算法讀取檔案,獲取位置。速度會有些慢,對伺服器壓力大,準確。第3中 使用第三方ip轉換庫 ip2region 的git位址 ip2region 這個庫暫時不相...