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

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

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

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

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

問題解決方向一

1、改為如圖示,去掉static

問題解決方向二

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

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

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

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

大概就是下面這樣

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

yml里:

 localhost-key: abcd

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

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

有點郁悶的,趕緊把@Component加上了:

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

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

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

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

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

原因如下

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

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

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

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

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

解決辦法

Spring支持set方法注入,我們可以利用非靜態(tài)Set方法注入靜態(tài)變量,并且使用@Value的類必須交給spring進行管理(即類上添加@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;  
     }
  }

再一運行,果然值就賦上了。

問題解決~

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

相關(guān)文章

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

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

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

    Java中類賦值的解釋實例詳解

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

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

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

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

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

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

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

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

    這篇文章主要介紹了Spring Data JPA設(shè)置字段默認值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    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 中多線程的同步依靠的是對象鎖機制,synchronized關(guān)鍵字就是利用了封裝對象鎖來實現(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

最新評論

蓬安县| 黄龙县| 广宗县| 紫金县| 聂拉木县| 宁都县| 乌恰县| 泗阳县| 龙南县| 石台县| 登封市| 合肥市| 诸暨市| 湖北省| 岚皋县| 闽侯县| 阿巴嘎旗| 安新县| 崇文区| 西贡区| 六枝特区| 梁平县| 湖州市| 阜新市| 通江县| 潜江市| 双鸭山市| 宝坻区| 东乡| 白银市| 莱芜市| 贞丰县| 马鞍山市| 西昌市| 利津县| 娱乐| 安顺市| 临朐县| 仁寿县| 屯门区| 宜章县|