Java中讀取配置文件中的內容,並將其賦值給靜態變量的方法


應用場景

項目開發中某個功能需要抽取成方法寫成一個工具類,提供給別人使用。寫過工具類的人都知道,工具類中的方法一般都是靜態方法,可以直接使用類名點方法名調用,

使用很方便,比如判斷某個對象是否為null的方式Objects.equals().由於我寫的這個工具類中需要讀取配置文件中的內容,可是常規方式注入成員變量時都不是靜態的,不

能直接調用,比如這種方式:

@Data
@Component
public class GBaseApiConfig {

  @Value("${gbase.api.prefix}")
  private String gbaseApi;

}

工具類中的靜態方法直接調用這種方式注入的成員變量會出現空指針異常,因為Java中的語法規定靜態的方法只能調用靜態的方法或者是成員變量,否則會報錯如下:

 

 

 想在靜態方法中使用其他非靜態的成員變量或者是方法只能通過創建對象的方式來調用,可是工具類中不可能這么干,不然就失去工具類的意義了。於是想到

如下方法

方法一

通過靜態代碼塊來讀取、加載配置文件中的內容,代碼如下

 先定義一個靜態的成員變量,然后在靜態代碼塊中讀取需要的配置文件信息,在給靜態變量賦值。這種方式親自測試完全可用。

方法二

可是過了一段時間后,項目經理讓我們修改代碼,原因是希望項目中的代碼風格統一,全部都使用@Value注解注入的方式。

很快一個同事就找到一個可行的辦法,代碼如下

 

 

 實現spring中的InitializingBean接口,然后重寫afterPropertiesSet方法即可。實現方式為先將配置文件中的值注入到一個成員變量中,然后通過方法

afterPropertiesSet實現工具類的初始化,這樣就可以將配置文件中的信息注入到工具類中。測試可用。

 


免責聲明!

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



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