[英]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.