簡體   English   中英

jar 之外的 ResourceBundle 文件

[英]ResourceBundle file outside jar

我有一個帶有/resources/application.properties的 spring 引導應用程序,部署后在 jar(以及其中的那個)旁邊有一個application.properties

在代碼中的某處,我使用了ResourceBundle.getBundle("application").getString("x") ,但它始終返回 jar 內的屬性中定義的值。

我的目標是從外部文件中獲取值(如果存在),如果不存在則我需要從 jar 內部獲取值。就像默認的 springs 行為一樣,但我無法實現這一點。

編輯:

您可以使用下面正確答案中的解決方案,也可以通過自動裝配和使用getProperty()來依賴 springs Environment

ResourceBundle.getBundle(String baseName)依賴類加載器而不是直接依賴文件系統來查找資源。
這相當於調用重載的:

getBundle(baseName, Locale.getDefault(), this.getClass().getClassLoader()), 

所以你的結果是意料之中的。
您要查找的是PropertyResourceBundle
要創建的實例,您需要一個Reader或一個InputStream

您可以加載外部和內部文件。

ResourceBundle internalProps = ResourceBundle.getBundle("application");
ResourceBundle externalProps = new  PropertyResourceBundle(Files.newInputStream(Paths.get("application.properties"));

您可以在第一個意圖中使用外部ResourceBundle ,將第二個用作后備。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM