配置文件优先级解读

简介: 配置文件优先级解读

概述

SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。三种配置文件格式分别如下:

  • properties格式
  • yml格式
  • yaml格式

application.properties(properties格式)

server.port=80

application.yml(yml格式)

server:
  port: 81

application.yaml(yaml格式)

server:
  port: 82

yml和yaml文件格式就是一模一样的,只是文件后缀不同,所以可以合并成一种格式来看。

  1. yaml语法规则
  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • #号 表示注释
  1. 注意属性名冒号后面与数据之间有一个空格
  2. 字面值、对象数据格式、数组数据格式  

同级目录application配置文件优先级

application.properties  >  application.yml  >  application.yaml

每个配置文件中的项都会生效,只不过如果多个配置文件中有相同类型的配置会优先级高的文件覆盖优先级的文件中的配置。如果配置项不同的话,所有的配置项都会生效。

application 以及bootstrap 优先级

bootstrap优先于application加载, 用于应用程序上下文的引导阶段。由spring cloud BootstrapApplicationListener在ApplicationEnvironmentPreparedEvent时进行加载。

可以将bootstrap配置理解为系统级别的参数配置,这些参数一般不会变更。

application配置可以理解为定义应用级别的参数,可以覆盖替换bootstrap的配置信息。

application的属性优先较高,加载时先加载bootstrap配置文件,再加载application配置文件

不同级目录配置文件优先级

加载1. classpath:/                                    -- 优先级4. The classpath root

加载2. classpath:/config/                         -- 优先级3. A classpath /config package

加载3. file:./                                             -- 优先级2. The current directory

加载4. file:./config/                                   -- 优先级1. A /config subdirectory of the current directory.

外部配置加载顺序

SpringBoot也可以从以下位置加载配置:

优先级从高到低;

高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

1.命令行参数

所有的配置都可以在命令行上进行指定;多个配置用空格分开; --配置项=值

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar

--server.port=8087 --server.context-path=/abc

2.来自java:comp/env的JNDI属性

3.WDpUhJava系统属性(System.getProperties())

4.操作系统环境变量

5.RandomValuePropertySource配置的random.*属性值

6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件

7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

8.jar包外部的application.properties或application.yml(不带spring.profihttp://le)配置文件

9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

由jar包外向jar包内进行寻找,优先加载带profile的,再加载不带profile的。

10.@Configuration注解类上的@PropertySource

11.通过SpringApplication.setDefaultProperties指定的默认属性


相关文章
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 > Java系统属性 > application.properties > application.yml > application.yaml。
1513 0
|
存储 人工智能 关系型数据库
4年10亿美金,Neon用Serverless PG证明:AI需要的不是“大”,而是“隐形”
AnalyticDB PostgreSQL 版基于Neon架构隆重推出满足 AI 时代应用开发需求的Serverless版本,并且在这之上搭载了结构化分析、向量检索、BM25全文检索和图检索,通过一套引擎满足 AI 应用丰富的数据诉求,支持MCP和OpenAI协议,为企业全面拥抱 AI 配备了数据存储、分析和应用的 “关键” 能力,帮助企业火箭式启动跑赢时代。
|
监控 数据可视化 安全
看得见的安全:如何用可视化大屏提升数据监测和网络预警效率
网络安全已成各组织核心议题,传统防护难以应对复杂攻击。AnaTraf网络流量分析仪通过实时分析流量,提取关键行为,提前发现潜在威胁。其可视化大屏将数据直观呈现,助力安全人员快速捕捉风险。系统基于趋势分析构建动态风险模型,实现预判而非仅报警,成为有判断力的“网络安全参谋”。在攻击无孔不入的时代,AnaTraf提供全新认知方式,以“看得见”提升对威胁的判断力。
看得见的安全:如何用可视化大屏提升数据监测和网络预警效率
|
SQL 消息中间件 Java
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
1080 3
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
34236 8
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
Kubernetes jenkins 持续交付
轻量快速的 CI 工具 Drone
本文介绍一款轻量级的 CI 工具 Drone ,同时也介绍在实践中遇到的一些坑,帮助你快速搭建持续集成流水线。
8202 0
|
IDE Java 测试技术
通义灵码测评报告
通义灵码测评报告
1441 1
|
前端开发 Java API
SpringBoot 常用的配置文件 application.yml和 bootstrap.yml的区别
SpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的加载必须借助编码逻辑来实现。
1247 0