jar外部的java Spring启动外部属性
我正在创建一个Spring启动应用程序,我遇到了这个问题
我的application.properties
在resource文件夹中,但我还需要外部资源。属性文件位于jar之外,用于配置如下属性:
名称,
密码,
等等
我想要外用的。属性文件位于jar外部和resources文件夹内部,用于在开发时进行测试
我尝试创建如下配置文件:
@Configuration
@PropertySource("classpath:" + SpringConfiguration.EXTERNALIZED_PROPERTIES)
@PropertySource(value = "file:./" +
SpringConfiguration.EXTERNALIZED_PROPERTIES, ignoreResourceNotFound = true)
public class SpringConfiguration {
static final String EXTERNALIZED_PROPERTIES = "external.properties";
}
但它仍然从资源文件夹中读取属性。我怎样才能让它从罐子外面读出来
# 1 楼答案
如果您希望开发和生产使用不同的道具,请使用application-dev.properties和application-prod.properties,并在启动时设置适当的spring配置文件。如果需要重写jar中的任何属性,只需将
-Dmyproperty=myvalue
添加到startup命令# 2 楼答案
解决方案是删除外部数据。属性和配置文件。而不是使用它,而是将所有属性应用到应用程序中。财产。并提交申请。属性添加到jar文件夹中。Spring会自动将这个属性文件的优先级设置为高于jar中的属性文件
# 3 楼答案
尝试将绝对系统路径指定为
file:
属性的值或者,我建议先将该绝对路径设置为一个ENV变量,然后在
file:
中使用该变量:这样,当目录更改时,您就不需要更改代码
# 4 楼答案
马西耶·科瓦尔斯基的回答与此类似
})
假设在文件夹“/home/me/configs”中有“application.properties”文件
使用自定义文件夹运行应用程序:
或者
此外,还可以将其导出为环境变量(unix)
# 5 楼答案
如果需要添加外部属性,可以仅在
application.properties
中指定例如:
myapplication.username='john'
通过Spring引导代码,您可以访问它,如下所示:
或者
@Value("$myapplication.username")
我不认为有任何必要有外部文件,如果你的要求是你提到的问题