Java Spring启动-使用配置文件时未读取默认属性文件

Java Spring启动-使用配置文件时未读取默认属性文件,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个带有2个属性文件的spring boot 2应用程序: 应用程序属性 application-dev.properties 当我使用dev概要文件在IntellijIdea中运行应用程序时,Spring会读取特定于概要文件的文件和默认文件 构建可执行jar文件后,我在jar外部创建了一个新的application-prod.properties,其中包含生产环境属性,并使用--spring.profiles.active=prod执行应用程序,希望它读取此文件和默认的applicat

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

  • 应用程序属性
  • application-dev.properties
当我使用dev概要文件在IntellijIdea中运行应用程序时,Spring会读取特定于概要文件的文件和默认文件

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

Spring Boot应该同时读取这两个文件吗?还是我希望它在默认情况下不会这样做


如果应该,我会缺少什么?

默认情况下,application.properties将用于运行Spring引导应用程序。在运行JAR文件时,需要指定spring活动概要文件。只有一个文件将被读取

,正如Michael提到的,Spring boot支持

我尝试了这个,它的工作如预期,你可以找到一个参考项目中

我可以考虑以下几点:

  • 提取jar文件的内容,并确认名为application.properties的文件捆绑在其中

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

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

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

您所说的“在JAR之外”是什么意思?您如何判断它从默认的dev概要文件中读取?向我们展示一些不真实的东西。Spring支持属性层次结构。你搞定了。我使用spring.config.location更改外部属性文件的位置。我把它改成了spring.config.additional-location,它成功了。