首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring :如何使用@PropertySource指向jar之外的文本文件?

Spring :如何使用@PropertySource指向jar之外的文本文件?
EN

Stack Overflow用户
提问于 2018-02-19 21:11:20
回答 5查看 12.9K关注 0票数 0

我正在开发一个独立的Swing/Spring应用程序,它将部署在许多不同的环境中。因此,我需要Spring加载一个外部配置文件,用户将在其中输入数据库凭据。当我用Netbeans注释我的配置类并运行它时,一切都很好:

代码语言:javascript
运行
复制
@PropertySource("classpath:config.properties")

在这种情况下,文本文件从src/main/resources文件夹中获取,应用程序可以使用凭据启动。我的问题涉及最终将部署的打包JAR文件。由于类路径在JAR中,用户如何能够编辑其内容?

是否有一种方法可以让@PropertySource指向打包的JAR之外,例如,我完全愿意添加一个环境变量,作为应用程序工作的必要条件?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-02-19 21:14:16

如前所述,您可以使用yml获取外部属性:

属性文件的弹簧引导外部配置

@PropertySource("file:${application_home}config.properties")//or指定yaml文件

票数 2
EN

Stack Overflow用户

发布于 2018-02-19 21:14:39

用这个:

代码语言:javascript
运行
复制
@PropertySource("file:/path/to/file")

来自用于PropertySource的javadocs

${.}占位符将针对已在环境中注册的任何/所有属性源进行解析。

允许这样的事情:

代码语言:javascript
运行
复制
@PropertySource("file:${my_var}path/to/file")
票数 0
EN

Stack Overflow用户

发布于 2018-02-19 21:40:03

您可以将您的配置文件作为类路径的一部分(在jar中),以及在类路径之外的另一个配置文件,后者将重写打包配置中的默认值。您可以使用file: URI而不是classpath从类路径外部加载外部文件:

@PropertySource("file:/config.properties")

但是:您不必自己使用@PropertySource: Spring引导从不同位置自动加载配置文件:

这里记录了这一点:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

SpringApplication将在以下位置从application.properties文件中加载属性,并将它们添加到SpringApplication中:

  • 当前目录的/config子目录。
  • 当前目录
  • 类路径/config包
  • 类生根

列表按优先级排序(在列表中较高的位置中定义的属性覆盖在较低位置中定义的属性)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48874223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档