Spring Boot - 如何配置环境变量?

7
我希望能在我的Spring Boot应用程序中指定环境变量。我使用一个外部库,这个库需要环境变量,而且根据我们部署的环境,这些变量的值也会发生变化。
例如,在打包好的Spring Boot jar包的application.properties文件中,我添加如下属性:
foo=bar 对应于Java命令行中的-Dfoo=bar -jar myapp-boot-packaged.jar。

1
问题是什么?您是在询问如何通过Spring Boot应用程序设置环境变量和值吗? - Ryuzaki L
2
是的。我有一个外部库,它期望环境变量被设置。然而,当我在application.properties中定义这些变量时,外部库并不认可。我可以通过IDE的运行配置指定环境变量来运行应用程序。我正在寻找一种将其打包到我的应用程序中的方法。 - geekygranger
结果发现问题出在提供的jar包中。 - geekygranger
1
请问,你找到了解决方案吗? - lcnicolau
3个回答

5

你需要在 application.properties 文件中声明

foo=${bar}

当你运行它时:

Java -jar myApp.jar -Dbar=someValue

3
您可以像这样在命令行中运行它:
$ java -jar myapp-boot-packaged.jar --foo='bar'

Spring Boot Docs


1

使用环境变量或属性源

您无需配置任何内容,它本身就支持。

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

这已经为您完成了,所以您只需要在以下位置声明您的变量:

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

根据环境设置的属性(配置文件)

如果您想要使用每个环境(本地,开发,生产)的配置文件,可以使用配置文件,一个示例是在类路径或外部化中同时有 application.propertiesapplication-[profile].properties(其中 [profile] 可以是 dev、prod 等)。请参考 spring.config.location

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


1
谢谢。读取环境变量的外部库无法从我的application.properties文件中读取它。我正在寻找一种使用特定配置文件来打包它到我的应用程序中的方法。 - geekygranger
结果发现问题出在提供的jar包中。 - geekygranger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接