如何从系统变量设置弹簧轮廓?

2022-08-31 09:31:49

我有一个Spring项目,它使用另一个项目。每个项目都有自己的spring配置文件,使用和针对每个配置文件从java代码初始化。我从 注入配置文件。问题是第二个项目使用来自 我无法将环境注入第二个项目,我试图寻找一篇文章来解释Spring配置文件的工作原理。applicationContext.xml*.propertiesargs[]applicationContext.xmlargs[]

  1. 是否存在一个层次结构,当默认未配置为 时,它将在其上查看配置文件?applicationContext.xml
  2. 系统变量是否比配置更强大?applicationContext.xml
  3. 您认为解决我挑战的最佳解决方案是什么?

关于该主题的文章甚至示例将不胜感激!提前致谢。


答案 1

SPRING_PROFILES_ACTIVE是覆盖/拾取弹簧轮廓的环境变量


答案 2

如果您向 JVM 提供 Spring 配置文件,则应该没有问题:

java -Dspring.profiles.active=development -jar yourApplication.jar 

另请参阅弹簧文档:

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html

69.5 设置活动弹簧轮廓

Spring环境有一个API,但通常你会设置一个System属性(spring.profiles.active)或一个OS环境变量(SPRING_PROFILES_ACTIVE)。例如,使用 -D 参数启动应用程序(请记住将其放在主类或 jar 存档之前):

$ java -jar -Dspring.profiles.active=production demo-0.0.1-SNAPSHOT.jar

在Spring Boot中,您还可以在apprament.properties中设置活动配置文件,例如

弹簧.型材.活动=生产

以这种方式设置的值将替换为 System 属性或环境变量设置,但不会替换为 SpringApplicationBuilder.profiles() 方法。因此,后者的 Java API 可用于在不更改默认值的情况下扩充配置文件。

有关详细信息,请参见“Spring Boot 功能”部分中的第 25 章 “配置文件”。


推荐