Spring Boot-使用配置文件时不读取默认属性文件

时间:2019-07-17 20:04:45

标签: java spring spring-boot

我有一个带有2个属性文件的spring boot 2应用程序:

  • application.properties
  • application-dev.properties

当我使用dev配置文件在IntellijIdea中运行应用程序时,Spring会同时读取特定于配置文件的文件和默认文件。

一旦我构建了一个可执行的jar文件,我就在jar外部创建了一个新的application-prod.properties,其中包含生产环境属性,并使用--spring.profiles.active=prod执行该应用程序,希望它读取此文件和默认的{{ 1}},但是它只读取jar之外的文件(application-prod.properties)。

Spring Boot应该同时读取两个文件,还是我期望它默认不会执行某些操作?

如果应该,我会丢失什么?

2 个答案:

答案 0 :(得分:1)

如Michael所述,Spring Boot支持property hierarchies

我尝试了此方法,它可以按预期工作,您可以在here中找到参考项目

我可以考虑的几件事:

  • 解压缩jar文件的内容,并确认名为application.properties的文件已捆绑在其中。

  • 您可能会覆盖spring.config.location属性,并使用文件名而不是目录

来自Spring Boot documentation

  

如果您在spring.config.location中指定了任何文件,则不考虑这些文件的特定于配置文件的变体。如果您还想使用特定于配置文件的属性,请使用spring.config.location中的目录。

  • 如果您覆盖默认的spring.config.location,则应用程序可能无法找到默认的application.properties文件。

答案 1 :(得分:0)

默认情况下,application.properties将用于运行Spring Boot应用程序。运行JAR文件时,您需要指定spring活动概要文件。仅读取一个文件。