spring 如何將配置信息注入靜態(tài)變量的方法
我們學(xué)習(xí)過將配置信息,通過@Value()的方法注入到對象的變量。這是由于對象是由spring來托管的。那么非spring如果,我們需要在靜態(tài)方法中,使用配置文件中的值,又該怎么做呢?
傳統(tǒng)的錯誤作法
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 未注入"); } }
控制臺打印為: "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); } }
控制臺正確的打印了注入的值。
原因猜想
spring
進(jìn)行組件掃描,遇到@Component
時,初始化對象 RedisServiceImpl
, 初始化過程中,掃描到@Value
注解,將值注入給方法。
接著,方法將值傳給了RedisServiceImpl
類,故RedisServiceImpl
有值 -- 正解。
如果將@Value(),
直接加到靜態(tài)私有變量上,則在初始化對象時,由于靜態(tài)私有變量屬于類,所以spring未對類進(jìn)行操作 -- 錯誤。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot利用Aop捕捉注解實(shí)現(xiàn)業(yè)務(wù)異步執(zhí)行
在開發(fā)過程中,盡量會將比較耗時且并不會影響請求的響應(yīng)結(jié)果的業(yè)務(wù)放在異步線程池中進(jìn)行處理,那么到時什么任務(wù)在執(zhí)行的時候會創(chuàng)建單獨(dú)的線程進(jìn)行處理呢?這篇文章主要介紹了Springboot利用Aop捕捉注解實(shí)現(xiàn)業(yè)務(wù)異步執(zhí)行2023-04-04Spring中@Transactional(rollbackFor=Exception.class)屬性用法介紹
這篇文章介紹了Spring中@Transactional(rollbackFor=Exception.class)屬性的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12java如何對map進(jìn)行排序詳解(map集合的使用)
這篇文章主要介紹了java如何對map進(jìn)行排序,java map集合的使用詳解,大家可以參考使用2013-12-12Springboot中@Value注解的場景用法及可能遇到的問題詳解
這篇文章主要給大家介紹了關(guān)于Springboot中@Value注解的場景用法及可能遇到問題的相關(guān)資料, @Value通常用于注入外部化屬性,即外部配置屬性的注入,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11使用IDEA創(chuàng)建Java Web項(xiàng)目并部署訪問的圖文教程
本文通過圖文并茂的形式給大家介紹了使用IDEA創(chuàng)建Java Web項(xiàng)目并部署訪問的教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08Mybatis Order by動態(tài)參數(shù)防注入方式
這篇文章主要介紹了Mybatis Order by動態(tài)參數(shù)防注入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04