spring中使用@Value設置全局變量默認值


  前幾天在開發過程中遇到一個使用 spring 的 @Value 給類的全局變量設置默認值不成功的問題,最后通過查資料也是輕松解決,但是發現使用@Value也是有多種多樣的方式,今天總算是將開發任務結束,於是打算回過頭來再去研究研究這個問題。

 

一、首先展示兩種我這邊的錯誤寫法。讓大家引以為戒。

  1. 在給類的全局靜態變量設置默認值時,@Value 不能直接寫在變量上方。

  

  2.將 @Value 加到set方法上時,不能使用 static 修飾

 

  3.使用 @Value 時不能用#代替$

 

  以上幾種錯誤就是我在開發過程中出現的一些比較容易出現的錯誤,下面就是我在查詢資料時學習到@Value的一些使用方法。

 

二、配置 .properties 文件

 

  使用 @Value 我們一般會將一些經常容易修改,但是在程序中不變的變量配置到配置文件中,一般是 .properties 文件,下面是三種不同的方式去將  .properties 文件引入到項目中。

  1. 在spring 的配置文件中使用 <context:property-placeholder/> 標簽,其中 loaction 為配置文件路徑 file-encoding 為配置編碼格式

 

   2. 在spring 的配置文件中配置bean

 

  3. 第三種則是使用 @PropertySource 注解將配置文件加載到某一個類中

 

 三、@Value 注解的使用

  1. 非靜態變量使用 @Value

    ①. 將@Value 加在變量上 

 

    ②. 將@Value 加在 set 方法上

 

 

  2. 靜態變量使用 @Value

     靜態變量在使用 @Value時,只能加在 set 方法上面,並且set方法不能是靜態方法

 

 

 四、# 符與 $ 符的區別

   1. @Value("#{}")

     ①. 直接給變量賦值

    ②. 對賦值的字符串進行一些操作

    ③. 如果 .properties 是以bean的方式注入的,則可以使用bean的id去獲取屬性

    ④. 上面的情況還可以這么寫

    ⑤. 表達式

 

   2. @Value("${}")

     ①. 獲取普通配置文件中的屬性

    ②. 如果配置文件中沒有獲取到屬性值則使用默認值

 

 

  3. 其他無符號用途

    ①. 文件資源

 

    ②. 網站資源

 

 五、在引入 .properties 文件時出現的 編碼問題

 

  在上面學習開始時我還遇到使用 @Value 注解設置默認值為中文時出現的亂碼問題,我在網上百度出來好多博客幾乎大同小異都是下面兩種解決方案,以及修改 IDE 的編碼格式等等:

  1.修改注解

   2. 修改配置文件

 

   但是,在我實踐的過程中發現,這兩種方式都不能生效不知道是因為我在什么地方沒有添加什么配置還是什么原因,如果有知道的小伙伴可以給我留言。我在測試時發現 .properties 文件在讀取時,無論 IDE 將文件設置為什么格式,都會將內容轉換為 ISO-8859-1 的編碼。於是我在獲取到默認值之后再將之轉換為 UTF-8.

 

  還有一種方式就是在.properties  文件中寫中文時直接轉換成Unicode 編碼,使用 @Value 時就不用做其他轉碼操作。

 

  

-------------------- END ---------------------

 

最后附上作者的微信公眾號地址和博客地址 

公眾號:wuyouxin_gzh

 

Herrt灬凌夜:https://www.cnblogs.com/wuyx/

 

 

 

 

 

 

版權說明:歡迎以任何方式進行轉載,但請在轉載后注明出處!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM