最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot使用@value注入配置失敗的解決

 更新時間:2021年09月26日 09:21:43   作者:李享  
這篇文章主要介紹了springboot使用@value注入配置失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot使用@value注入配置文件失敗

遇到的問題原因是:類中注入對象不能用static。

問題解決方向一

1、改為如圖示,去掉static

問題解決方向二

1、仍然定義靜態(tài)變量,但在其set方法上使用@Value進(jìn)行賦值

2、仍然定義靜態(tài)變量,同時定義一個普通變量,使用@Value給普通變量賦值。定義一個方法,使用@PostConstruct注解注釋方法,在這個方法里,會自動將注入的值賦值給定義的static變量

@Value注入失敗,注入值為null的問題

今天在寫項(xiàng)目的時候,因項(xiàng)目里的某個key是每個人都不一樣,所以想到了在application.yml里配置,隨后使用@Value注入,不同人使用就只需要創(chuàng)建每個人的application文件就行了。

大概就是下面這樣

 @Value("${localhost-key}")
    private static String key;

yml里:

 localhost-key: abcd

結(jié)果不知道為什么,@Value注入一直為空??

很疑惑,檢查了一下@Value并沒有導(dǎo)錯包,@Value("${localhost-key}")也沒有寫錯,再仔細(xì)檢查了一下Utils,發(fā)現(xiàn)沒加@Component!?。?/p>

有點(diǎn)郁悶的,趕緊把@Component加上了:

@Component
public class FileUtils {
    @Value("${localhost-key}")
    private static String key;
}

再一運(yùn)行,發(fā)現(xiàn)居然還是null

心里很疑惑,到底哪里出了問題,運(yùn)行沒有問題,也沒有報錯,感覺就是@Value的問題了。

一番查找資料,又問了問學(xué)校的老師,終于明白:

@Value不能直接注入值給靜態(tài)屬性,Spring 不允許(或者說不支持)把值注入到靜態(tài)變量中

原因如下

靜態(tài)變量是一個類的屬性,而不是對象的屬性,但是Spring的依賴注入是基于對象層面上的。

而使用靜態(tài)變量擴(kuò)大了靜態(tài)方法的使用范圍,Spring是不推薦使用靜態(tài)方法的,依賴注入的目的就是想讓容器去產(chǎn)生一個對象的實(shí)例,然后在整個生命周期中使用他們。

而一旦使用靜態(tài)方法,就不會去產(chǎn)生這個類的實(shí)例,這會讓測試變得更加困難。同時也不能為一個給定的類,依靠注入方式去產(chǎn)生多個具有不同的依賴環(huán)境的實(shí)例。

這種靜態(tài)域是隱含共享的,并且是一種全局狀態(tài),Spring同樣不推薦這樣去做。

問題倒是找到了,但是有沒有解決的辦法呢?又是一番尋找之后

解決辦法

Spring支持set方法注入,我們可以利用非靜態(tài)Set方法注入靜態(tài)變量,并且使用@Value的類必須交給spring進(jìn)行管理(即類上添加@Compent、@RestController、@Service…)

@Component
public class FileUtils {
     private static String key;   
     @Value("${localhost-key}")
     public void setKey(String key) {    //注意這里的set方法不能是靜態(tài)的
         FileUtils.key = key;  
     }
  }

再一運(yùn)行,果然值就賦上了。

問題解決~

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot集成QQ第三方登陸的實(shí)現(xiàn)

    SpringBoot集成QQ第三方登陸的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot集成QQ第三方登陸的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java中類賦值的解釋實(shí)例詳解

    Java中類賦值的解釋實(shí)例詳解

    這篇文章主要介紹了Java中類賦值的解釋實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 利用@Value注解為bean的屬性賦值方法總結(jié)

    利用@Value注解為bean的屬性賦值方法總結(jié)

    這篇文章主要介紹了利用@Value注解為bean的屬性賦值方法總結(jié),文中有詳細(xì)的代碼示例,對學(xué)習(xí)@Value注解有一定的參考價值,需要的朋友可以參考下
    2023-05-05
  • IDEA如何實(shí)現(xiàn)批量修改變量名

    IDEA如何實(shí)現(xiàn)批量修改變量名

    這篇文章主要介紹了IDEA如何實(shí)現(xiàn)批量修改變量名問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java高性能序列化工具Kryo詳情

    Java高性能序列化工具Kryo詳情

    這篇文章主要介紹了Java高性能序列化工具Kryo詳情,Kryo?是一個快速序列化/反序列化工具,依賴于字節(jié)碼生成機(jī)制,更多相關(guān)內(nèi)容感興趣的朋友可以參考一下下面文章內(nèi)容
    2022-06-06
  • Spring Data JPA 設(shè)置字段默認(rèn)值方式

    Spring Data JPA 設(shè)置字段默認(rèn)值方式

    這篇文章主要介紹了Spring Data JPA設(shè)置字段默認(rèn)值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java 創(chuàng)建線程的四種方式

    java 創(chuàng)建線程的四種方式

    這篇文章主要介紹了java 創(chuàng)建線程的四種方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • 深入講解java線程與synchronized關(guān)鍵字

    深入講解java線程與synchronized關(guān)鍵字

    Java 中多線程的同步依靠的是對象鎖機(jī)制,synchronized關(guān)鍵字就是利用了封裝對象鎖來實(shí)現(xiàn)對共享資源的互斥訪問。下面這篇文章主要介紹了java線程與synchronized關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下。
    2017-03-03
  • java中Servlet監(jiān)聽器的工作原理及示例詳解

    java中Servlet監(jiān)聽器的工作原理及示例詳解

    這篇文章主要介紹了java中Servlet監(jiān)聽器的工作原理及示例詳解。Servlet監(jiān)聽器用于監(jiān)聽一些重要事件的發(fā)生,監(jiān)聽器對象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理。感興趣的可以來了解一下
    2020-07-07
  • SpringBoot整合thymeleaf 報錯的解決方案

    SpringBoot整合thymeleaf 報錯的解決方案

    這篇文章主要介紹了SpringBoot整合thymeleaf 報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

崇文区| 隆安县| 嵊泗县| 南丹县| 苍溪县| 万宁市| 鹤庆县| 乌鲁木齐县| 东海县| 阿尔山市| 安泽县| 沈阳市| 金平| 巴马| 德阳市| 金山区| 东乡族自治县| 土默特右旗| 兰坪| 富蕴县| 罗平县| 黄陵县| 株洲市| 屏东县| 邓州市| 察雅县| 瓦房店市| 安宁市| 宁海县| 镇巴县| 平顺县| 天全县| 元氏县| 界首市| 大埔县| 舞阳县| 绥阳县| 通渭县| 海安县| 休宁县| 西峡县|