用Spring的這個類來讀取配置檔案

2021-10-16 09:39:27 字數 1343 閱讀 7978

在開發中讀取專案中的配置或者靜態檔案是家常便飯的事情,我相信很多同學都從網上找下面的例子來進行檔案載入讀取操作。

利用classloader獲取classpath路徑:

classloader loader = thread.currentthread().getcontextclassloader();

string classpath =  loader.getresource("").getpath()

或者利用class物件來獲取絕對路徑或者classpath路徑:

string absolutepath =  this.getclass().getresource("").getpath();

string classpath =  this.getclass().getresource("/").getpath();

然後在拼接檔案路徑讀取檔案。為什麼我這麼清楚?因為我也這麼幹過。但是現在我已經不這麼幹了,因為我發現了 spring 框架提供了更加好用的載入讀取檔案的方式。

對應讀取方法為:

classpathresource resource = new classpathresource(keypath);

inputstream is =  resource.getinputstream();

然後你就能從流中讀取配置檔案的內容了,非常簡單。

還有其它一些方法,例如判斷檔案是否存在、獲取檔案的file物件等等,也非常有用。

說到獲取檔案物件的getfile()方法,這裡是有乙個小坑的。當你利用這個方法去讀取 jar 包裡面類路徑的檔案的時候是行不通的。

經過**除錯,發現載入的位址是乙個 jar 檔案協議位址,它類似這種格式jar:file:/***/xx.jar!/***x

getfile()方法只支援jbossvfs協議頭和傳統檔案系統的file協議頭。所以推薦使用getinputstream()

classpathresource在讀取類路徑下的檔案配置、或者 excel 模板、靜態配置時非常有用,封裝了很多好用的 api,推薦大家在合適的場景下使用。

非spring管理的類獲取spring配置引數

您好,專案時當初遇到了乙個問題,就是用mybaties 獲取所有日誌的sql並記錄進入日誌系統時,需要讀取spring的yml配置引數。發現網上教的大部分方法都無效 value等 究其原因,發現,大部分方法都是基於spring管理的類獲取配置引數,其方法可行,而此處的mybaties 無法交給spr...

用properties檔案讀取資料庫的配置檔案

當properties檔案在src目錄下時!以下三種路徑都是正確的。經過實驗驗證都可以讀到配置檔案 classpath不需要大寫字母 class org.springframework.beans.factory.config.propertyplaceholderconfigurer classp...

用spring來實現rmi十分的方便

rmi,為遠端方法呼叫,我們要用spring來實現呼叫 步驟1 編寫遠端介面和遠端介面的實現類 介面 package com.rmi public inte ce isomeservice 實現類 package com.rmi public class someservice implements...