[英]How to load resource files in java based on the environment?
因此,我的團隊繼承了一個非常大的Java存儲庫。 它在打包的jar文件中有一個配置文件。
在代碼的多個位置,它加載配置文件,如下所示:
InputStream in = classLoader.getResourceAsStream("configfile.config");
現在,基於環境,我希望能夠加載其他配置文件。 在dev上,我希望能夠加載configfile.dev.config;在prod上,我希望能夠加載configfile.prod.config。
解決這個問題的最無創,最干凈的方法是什么?
它是Spring Boot應用程序嗎? 如果是,則可以使用不同的配置文件,例如dev,根據配置文件測試和加載資源。-https: //docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles 。 html
如果不是Spring Boot應用程序,則可以將配置文件值作為JVM參數傳遞,並在代碼中使用它來加載相應的資源。
value=System.getProperty("profile");
在以以下方式運行應用程序時傳遞配置文件值:
-Dprofile=test
您可以使用傳遞的配置文件並相應地加載相應的文件。
InputStream in =
classLoader.getResourceAsStream(value);
由於您似乎對此沒有框架支持,而是從命令行啟動,因此最好的方法是使用系統屬性。 有兩種常見方法:
使用諸如config.location
的屬性,其中值是配置文件的URI。 這更加靈活,允許您在運行時提供一個新的配置文件,但是在jar中引用一個配置文件會更加復雜(這些URI會變長,並且需要轉義shell)。
使用諸如config.profile
的屬性,其中值是諸如dev
或prod
類的配置文件標識符。 將您包含的配置文件命名為/dev/config.file
或/config-dev.file
,然后從屬性中組合適當的模板名稱。
根據您偏好在jar中包含多種配置,第二種選擇可能更合適。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.