Java jar外部的ResourceBundle文件

Java jar外部的ResourceBundle文件,java,spring-boot,configuration,Java,Spring Boot,Configuration,我有一个带有/resources/application.properties的spring引导应用程序,当部署时,jar旁边(以及jar内部)有一个应用程序.properties 在代码的某个地方,我使用了ResourceBundle.getBundle(“应用程序”).getString(“x”),但它总是返回jar中属性中定义的值 我的目标是从外部文件(如果存在)获取值,如果不存在,则需要从jar内部获取值。就像默认的springs行为一样,但我无法实现这一点 编辑: 您可以使用下面正确答

我有一个带有
/resources/application.properties
的spring引导应用程序,当部署时,jar旁边(以及jar内部)有一个
应用程序.properties

在代码的某个地方,我使用了
ResourceBundle.getBundle(“应用程序”).getString(“x”)
,但它总是返回jar中属性中定义的值

我的目标是从外部文件(如果存在)获取值,如果不存在,则需要从jar内部获取值。就像默认的springs行为一样,但我无法实现这一点

编辑:

您可以使用下面正确答案中的解决方案,也可以依靠springs
环境
,通过自动连接它并使用
getProperty()
依靠类加载器而不是直接通过文件系统来查找资源。
这相当于调用重载的:

getBundle(baseName, Locale.getDefault(), this.getClass().getClassLoader()), 
因此,您的结果是预期的。
你要找的是。
要创建的实例,您需要
读取器
输入流

您可以加载外部和内部文件

ResourceBundle internalProps = ResourceBundle.getBundle("application");
ResourceBundle externalProps = new  PropertyResourceBundle(Files.newInputStream(Paths.get("application.properties"));
因此,您可以在第一个意图中使用外部
ResourceBundle
,第二个意图作为后备方案