为了账号安全,请及时绑定邮箱和手机立即绑定

jar之外的Spring Boot外部属性

jar之外的Spring Boot外部属性

Helenr 2022-05-12 18:18:50
我正在创建一个 Spring Boot 应用程序,我遇到了这个问题。我有我application.properties的资源文件夹,但我还需要 jar 外部的 external.properties 文件来配置诸如名称、密码等属性。我希望在 jar 外部和资源文件夹内部有 external.properties 文件,以便在开发时进行测试。我尝试创建这样的配置文件:@Configuration @PropertySource("classpath:" + SpringConfiguration.EXTERNALIZED_PROPERTIES) @PropertySource(value = "file:./" +  SpringConfiguration.EXTERNALIZED_PROPERTIES, ignoreResourceNotFound = true) public class SpringConfiguration {       static final String EXTERNALIZED_PROPERTIES = "external.properties"; }但它仍然从资源文件夹中读取属性。我怎样才能让它从罐子外面读取?
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

尝试将绝对系统路径指定为file:属性值。

或者,我建议先将该绝对路径设置为 ENV 变量,然后在以下位置使用该变量file:

@PropertySource("file:${EXTERNAL_RESOURCE_DIR}/application.properties")

因此,当该目录更改时,您无需更改代码。


查看完整回答
反对 回复 2022-05-12
?
千巷猫影

TA贡献1829条经验 获得超7个赞

Maciej Kowalski 的类似回答。


@PropertySources({

@PropertySource(value = {"classpath:application.properties"}, ignoreResourceNotFound = true),

@PropertySource(value = {"file:${external.config.location}/application.properties"}, ignoreResourceNotFound = true)

})


假设在文件夹“ /home/me/configs ”中有“ application.properties ”文件。


使用自定义文件夹运行应用程序:


java -jar app.jar --external.config.location="/home/me/configs"

或者


java -jar app.jar --external.config.location="C:\\users\\your_user\\configs"

此外,您可以将其导出为环境变量(unix)


export JAVA_OPTS='-Dexternal_config_location=/home/me/configs'


查看完整回答
反对 回复 2022-05-12
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

解决方案是删除 external.properties 和配置文件。而不是使用它,而是将所有属性放入 application.properties。并将 application.properties 放入带有 jar 的文件夹中。Spring 自动将此属性文件优先于 jar 中的属性文件。



查看完整回答
反对 回复 2022-05-12
  • 3 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号