Java如何讀取配置檔案並賦值靜態變數
阿新 • • 發佈:2020-10-12
應用場景
專案開發中某個功能需要抽取成方法寫成一個工具類,提供給別人使用。寫過工具類的人都知道,工具類中的方法一般都是靜態方法,可以直接使用類名點方法名呼叫,
使用很方便,比如判斷某個物件是否為null的方式Objects.equals().由於我寫的這個工具類中需要讀取配置檔案中的內容,可是常規方式注入成員變數時都不是靜態的,不
能直接呼叫,比如這種方式:
@Data @Component public class GBaseApiConfig { @Value("${gbase.api.prefix}") private String gbaseApi; }
工具類中的靜態方法直接呼叫這種方式注入的成員變數會出現空指標異常,因為Java中的語法規定靜態的方法只能呼叫靜態的方法或者是成員變數,否則會報錯如下:
想在靜態方法中使用其他非靜態的成員變數或者是方法只能通過建立物件的方式來呼叫,可是工具類中不可能這麼幹,不然就失去工具類的意義了。於是想到
如下方法
方法一
通過靜態程式碼塊來讀取、載入配置檔案中的內容,程式碼如下
先定義一個靜態的成員變數,然後在靜態程式碼塊中讀取需要的配置檔案資訊,在給靜態變數賦值。這種方式親自測試完全可用。
方法二
可是過了一段時間後,專案經理讓我們修改程式碼,原因是希望專案中的程式碼風格統一,全部都使用@Value註解注入的方式。
很快一個同事就找到一個可行的辦法,程式碼如下
實現spring中的InitializingBean介面,然後重寫afterPropertiesSet方法即可。實現方式為先將配置檔案中的值注入到一個成員變數中,然後通過方法
afterPropertiesSet實現工具類的初始化,這樣就可以將配置檔案中的資訊注入到工具類中。測試可用。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。