application.properties
很久以来我一直在我的 Spring 应用程序中使用文件。但最近我遇到了application.yaml
文件。三者之间的优先顺序是什么以及使用个人的优势(如果有的话)。
我知道这可能是个愚蠢的问题。但我对它们的用法感到困惑。
application.properties
很久以来我一直在我的 Spring 应用程序中使用文件。但最近我遇到了application.yaml
文件。三者之间的优先顺序是什么以及使用个人的优势(如果有的话)。
我知道这可能是个愚蠢的问题。但我对它们的用法感到困惑。
Spring Boot 属性解析属性顺序在此处描述。
预计不会使用application.properties
和。 application.yaml
使用一种格式或另一种格式,但不能同时使用两种格式。无论您使用哪一个,都将按属性优先顺序在位置 12 或 13(取决于文件是否打包在应用程序 JAR 中)处理。
在此处包括上述链接的摘录以避免链接腐烂...
Spring Boot 使用一个非常特殊的 PropertySource 顺序,该顺序旨在允许明智地覆盖值。属性按以下顺序考虑:
- 主目录上的 Devtools 全局设置属性(当 devtools 处于活动状态时为 ~/.spring-boot-devtools.properties)。
- 测试中的 @TestPropertySource 注释。
- 测试中的 @SpringBootTest#properties 注释属性。
- 命令行参数。
- 来自 SPRING_APPLICATION_JSON 的属性(嵌入在环境变量或系统属性中的内联 JSON)
- ServletConfig 初始化参数。
- ServletContext 初始化参数。
- 来自 java:comp/env 的 JNDI 属性。
- Java 系统属性 (System.getProperties())。
- 操作系统环境变量。
- 仅具有随机属性的 RandomValuePropertySource。*。
- 打包 jar 之外的特定于配置文件的应用程序属性(application-{profile}.properties 和 YAML 变体)
- 打包在 jar 中的特定于配置文件的应用程序属性(application-{profile}.properties 和 YAML 变体)
- 打包 jar 之外的应用程序属性(application.properties 和 YAML 变体)。
- 打包在 jar 中的应用程序属性(application.properties 和 YAML 变体)。
- @Configuration 类上的 @PropertySource 注释。
- 默认属性(使用 SpringApplication.setDefaultProperties 指定)。
简单来说,
如果您同时拥有 yaml 和属性文件,并且两者都具有相同的键,则 spring boot 将首先在属性中查找,如果未找到,则将转到 yaml。