【问题标题】:Spring Boot - How to configure Environment Variables?Spring Boot - 如何配置环境变量?
【发布时间】:2019-08-03 13:48:22
【问题描述】:

我希望能够在我的 Spring Boot 应用程序中指定环境变量。我有一个正在使用的外部库,它需要环境变量,这些变量的值将根据我们部署的环境而变化。

例如,在我打包的spring boot jar“myapp-boot-packaged.jar”的application.properties中,我添加了以下属性:

foo=bar

等效于 java -Dfoo=bar -jar myapp-boot-packaged.jar

【问题讨论】:

  • 到底是什么问题?您是在问如何通过 Spring Boot 应用程序设置环境变量和值?
  • 是的。我有一个期望设置环境变量的外部库。但是,当我在 application.properties 中定义变量时,外部库无法识别它。我可以通过 IDE 的运行配置指定环境变量来运行应用程序。我正在寻找一种将其打包到我的应用程序中的方法。
  • 原来问题出在提供的 jar 中。
  • 拜托,你找到解决办法了吗?

标签: spring-boot environment-variables


【解决方案1】:

你必须在application.properties声明

foo=${bar}

你运行它的时间:

Java -jar myApp.jar -Dbar=someValue

【讨论】:

    【解决方案2】:

    使用来自环境或属性源的属性

    您不必配置任何它本机支持的内容。

    Spring Boot 允许您将配置外部化,以便您可以 在不同的环境中使用相同的应用程序代码。你可以 使用属性文件、YAML 文件、环境变量和 用于外部化配置的命令行参数。属性值 可以通过使用 @Value 直接注入到你的 bean 中 注解,通过 Spring 的 Environment 抽象访问,或者 通过@ConfigurationProperties 绑定到结构化对象。

    它已经为你完成了,所以你仍然需要做的是在 :

    中声明你的变量
    • 命令行参数 (--foo=bar)
    • 来自 java:comp/env 的 JNDI 属性。
    • Java 系统属性 (System.getProperties())。
    • 操作系统环境变量。

    按环境划分的属性(配置文件)

    如果您想使用每个环境(本地、开发、生产)的属性,您可以使用配置文件,一个虚拟示例是拥有 application-[profile].properties(其中 [配置文件] 可以是开发、生产 ...)以及 @987654323 @ 在您的类路径中或外部化(请参阅使用 spring.config.location )。

    请注意,应用程序配置文件的特定属性会覆盖 application.properties 中的属性

    【讨论】:

    • 谢谢。读取环境变量的外部库无法从我的 application.properties 文件中读取它。我正在寻找一种使用配置文件特定属性文件将其打包到我的应用程序中的方法。
    • 原来问题出在提供的 jar 中。
    【解决方案3】:

    您可以像这样在命令行中简单地运行它:

    $ java -jar myapp-boot-packaged.jar --foo='bar'
    

    Spring Boot Docs

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 1970-01-01
      • 2017-09-06
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 2022-01-25
      • 2019-08-03
      相关资源
      最近更新 更多