Java如何讀取配置文件并賦值靜態(tài)變量
應用場景
項目開發(fā)中某個功能需要抽取成方法寫成一個工具類,提供給別人使用。寫過工具類的人都知道,工具類中的方法一般都是靜態(tài)方法,可以直接使用類名點方法名調用,
使用很方便,比如判斷某個對象是否為null的方式Objects.equals().由于我寫的這個工具類中需要讀取配置文件中的內容,可是常規(guī)方式注入成員變量時都不是靜態(tài)的,不
能直接調用,比如這種方式:
@Data@Componentpublic class GBaseApiConfig {@Value('${gbase.api.prefix}')private String gbaseApi;}
工具類中的靜態(tài)方法直接調用這種方式注入的成員變量會出現空指針異常,因為Java中的語法規(guī)定靜態(tài)的方法只能調用靜態(tài)的方法或者是成員變量,否則會報錯如下:
想在靜態(tài)方法中使用其他非靜態(tài)的成員變量或者是方法只能通過創(chuàng)建對象的方式來調用,可是工具類中不可能這么干,不然就失去工具類的意義了。于是想到
如下方法
方法一
通過靜態(tài)代碼塊來讀取、加載配置文件中的內容,代碼如下
先定義一個靜態(tài)的成員變量,然后在靜態(tài)代碼塊中讀取需要的配置文件信息,在給靜態(tài)變量賦值。這種方式親自測試完全可用。
方法二
可是過了一段時間后,項目經理讓我們修改代碼,原因是希望項目中的代碼風格統(tǒng)一,全部都使用@Value注解注入的方式。
很快一個同事就找到一個可行的辦法,代碼如下
實現spring中的InitializingBean接口,然后重寫afterPropertiesSet方法即可。實現方式為先將配置文件中的值注入到一個成員變量中,然后通過方法
afterPropertiesSet實現工具類的初始化,這樣就可以將配置文件中的信息注入到工具類中。測試可用。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. offsetTop用法詳解2. ajax實現省市三級聯(lián)動效果3. Python 用NumPy創(chuàng)建二維數組的案例4. jsp+servlet簡單實現上傳文件功能(保存目錄改進)5. .NET API 接口數據傳輸加密最佳實踐記錄6. 存儲于xml中需要的HTML轉義代碼7. 利用VS2019創(chuàng)建Web項目并發(fā)送到IIS及IIS與ASP.NET配置教程8. ThinkPHP6使用JWT+中間件實現Token驗證實例詳解9. CSS可以做的幾個令你嘆為觀止的實例分享10. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera
