【问题标题】:Choose application.properties file via command line通过命令行选择 application.properties 文件
【发布时间】:2023-03-13 08:57:01
【问题描述】:

我正在开发一个命令行 Spring Boot 应用程序,我需要 Spring 来加载他的配置(数据库 URL、用户等),不一定来自默认的 application.properties 文件,而是在指定的 .properties 文件中字符串[] args 参数。我可能会使用一些关于如何实现这一点的提示。 感谢您的宝贵时间。

【问题讨论】:

  • 您是否阅读过文档中有关外部化配置的内容:docs.spring.io/spring-boot/docs/current/reference/html/…
  • @JoachimRohde 首先,谢谢。其次,24.3(不确定这是否是您要向我提出的观点)似乎提供了一种实现我的目标的方法(通过指定不同道具文件的名称和/或位置),所以我可以给它试一试。但是,除了配置文件之外,还有更多不同的领域相关方面可能会影响属性,我更希望通过命令行将它们添加到流程中并由 java 代码进行详细说明,从而产生“临时”属性文件选择(可能不需要应用用户知道属性文件位置)。

标签: java spring-boot command-line properties spring-data


【解决方案1】:

这可以通过 spring.config.location 属性来完成。

在你的命令行中添加

-Dspring.config.location=C:/application.properties (or whatever the path may be). 

这将替换您在 Spring Boot 应用程序中的任何属性文件,您可以在运行时随意更改它。

【讨论】:

  • 这正是我在@JoachimRohde 发布文档链接后应用的解决方法。但是,我更愿意向用户“隐藏”application.config 逻辑,提供某种与业务逻辑相关的“选项”(-option1 value1 -option2 value2)。我假设一种方法是解析参数并使用它们来选择实际的属性文件。我希望我现在解释了自己。感谢您的参与。
  • 啊,我明白了。那么在这种情况下,最好的方法是使用 spring shell 来调用你的 jar 和你需要的选项。你可以有任何你想要的选项:projects.spring.io/spring-shell。或者,您可以创建一个 bash 脚本来执行相同的操作,只需将 option1 映射到相关的 application.properties 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 2014-11-05
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 2010-12-16
  • 2013-11-20
相关资源
最近更新 更多