【问题标题】:Define Spring Boot profiles at run time在运行时定义 Spring Boot 配置文件
【发布时间】:2019-07-12 07:01:38
【问题描述】:

谁能告诉我是否可以通过运行应用程序的环境在弹簧加载应用程序中定义配置文件(Dev、Prod、Local)?

我的应用程序配置了配置文件(Dev、Prod、Local),但每次开发人员需要为每个环境设置活动配置文件时,他都会运行项目

【问题讨论】:

  • 我的 application.yml 中有本地和云。您可以为每个环境创建一个单独的 manifest-env.yml。
  • 在我的应用程序中有 3 个 application.properties,(Dev、homo、prod)。在主应用程序中,有一个属性 spring.profiles.active = local 用于开发,另一个用于生产。我想执行一个自动化任务,开发人员不需要记住在 application.properties 文件中更改此属性,从而冒着在生产中出错的风险。我想到了一些使用 maven 的配置文件的东西,詹金斯会根据环境进行构建,但它不起作用
  • 我确信您在每个环境中都有/使用(某种)运行脚本......像java ... -Dspring.profiles.active=prod那样设置它

标签: java spring spring-boot


【解决方案1】:

依靠您的默认设置 - 您可以免费获得 default 个人资料,这是大多数开发人员应该使用的个人资料。

您还可以将自定义配置文件添加到您的 ~/.spring-boot-devtools.properties 文件(前提是 devtools 处于活动状态 - check this reference)以覆盖该默认配置文件并设置您自己的配置文件。

这也意味着您传递了要在生产中运行的配置文件。 不要在预打包的 application.properties(或 application.yml)中设置生产配置文件。

【讨论】:

  • 非常感谢@Makoto 的回复,我试试这个方法
【解决方案2】:

我通常有一个用于开发的默认配置文件和一个用于每个环境的 shell 脚本文件。

您可以在 application.yml 中设置默认配置文件,如下所示:

spring:
  profiles.active: development

您可以在 shell 脚本中传递配置文件,如下所示:

java jar my-app.jar --spring.profiles.active="PROD"

【讨论】:

  • 我们没有这种shell脚本的方法,构建是由jenkins完成的。但我也许可以在那里做那种方法。感谢 Leandro Rosa 的回复,我会尝试
猜你喜欢
  • 2021-01-12
  • 2022-01-04
  • 2022-07-22
  • 2017-02-05
  • 2017-04-03
  • 2019-03-14
  • 1970-01-01
  • 2019-06-28
  • 2020-08-05
相关资源
最近更新 更多