java - 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 执行应用程序期望它读取此文件和默认的 application.properties,但它只读取 jar 外部的文件 (application-prod.properties)。

Spring Boot 应该读取这两个文件还是我期待它默认情况下不会执行的操作?

如果应该的话,我会错过什么?

最佳答案

正如 Michael 提到的,Spring boot 支持 property hierarchies .

我尝试了这个,它按预期工作,您可以在 here 中找到引用项目

我可以考虑的一些事情:

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

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

来自Spring Boot documentation

If you have specified any files in spring.config.location, profile-specific variants of those files are not considered. Use directories in spring.config.location if you want to also use profile-specific properties.

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

关于java - Spring boot - 使用配置文件时不读取默认属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57083364/

相关文章:

java - 绘制抗锯齿形状并在 Java 中旋转它们

java - 使用反射设置和获取的性能

java - 为什么 Android 回调方法的名称以 'on' 开头?

java - 自定义 PermissionEvaluation bean 导致循环引用和空指针异常

spring-boot - Spring Boot可执行文件-主应用程序类的classnotfound错误

java - 如何从 Eclipse 插件中的文件中读取数据?

java - 如何在java spring boot中使用mongoDB高级过滤器

java - EXT JS 5/Spring MVC : How to bind ext js form to java object with spring mvc

java - Spring Boot安全请求方法 'POST'不支持

spring - 如何在同一应用程序中运行 Spring Boot 管理客户端和服务器