Spring Boot 加载文件的优先级从高到低依次顺序

SpringBoot在启动时会创建ApplicationContext容器,加载配置文件的顺序包括:Environment对象、默认配置、外部配置、命令行参数、环境变量、JNDI和Java系统属性。配置文件加载遵循特定的优先级,例如命令行参数、环境变量等可覆盖默认配置。最后,所有配置合并成一个PropertySource。了解这一过程有助于优化开发效率。
摘要由CSDN通过智能技术生成

Spring Boot 文章目录

Spring Boot 加载文件的优先级,如何加载配置文件
如何使用SpringBoot全局异常处理?有效提升开发效率



前言

当 Spring Boot 启动时,会调用 SpringApplication.run() 方法创建一个 ApplicationContext 容器,并加载配置文件。


一、代码流程

  • 创建 Environment:Spring Boot 首先会创建一个 Environment 对象,用于保存应用程序的配置信息。Environment 包含多个 PropertySource,每个 PropertySource 都代表一个配置源。

  • 加载默认配置:Spring Boot 会加载默认的配置文件,如 application.properties 和
    application.yml,将它们包装成一个 PropertySource,并添加到 Environment 中。

  • 加载外部配置:Spring Boot 会扫描指定的配置文件路径,加载所有匹配的配置文件,将它们包装成一个PropertySource,并添加到 Environment 中。可以通过设置 spring.config.name 和
    spring.config.location 属性来指定配置文件名和路径。

  • 加载命令行参数:如果启动命令中包含 --spring.config.name 和 --spring.config.location
    参数,则会使用这些参数覆盖之前加载的配置文件。

  • 加载环境变量:Spring Boot 会加载系统环境变量中以 SPRING_ 开头的变量,并将它们添加到 Environment 中。

  • 加载 JNDI:如果应用程序使用 JNDI 技术管理配置,则会加载 JNDI 中的配置项,并将它们添加到 Environment 中。

  • 合并配置:Spring Boot 将所有的配置信息合并成一个统一的 PropertySource,形成一个完整的配置信息。

  • 构建 ApplicationContext:根据配置信息创建 ApplicationContext 容器,并将所有的 Bean
    定义加载到容器中。

二、配置文件的加载顺序

  1. 命令行参数:使用 java -jar 命令启动时,可以使用 --spring.config.name 和 --spring.config.location 选项指定配置文件名和路径。

  2. 来自操作系统的环境变量:通过环境变量 SPRING_CONFIG_NAME 和 SPRING_CONFIG_LOCATION
    来指定配置文件名和路径。

  3. JNDI:如果使用 JNDI 技术管理应用程序的配置,可以使用 java:comp/env/spring.config.name 和
    java:comp/env/spring.config.location 分别指定配置文件名和路径。

  4. Java 系统属性:可以通过设置 System 属性 spring.config.name 和
    spring.config.location 来指定配置文件名和路径。

  5. 配置文件:默认情况下,Spring Boot 会在以下位置查找配置文件:

  6. 当前工作目录下的 /config 子目录 当前工作目录 classpath 下的 /config 包 classpath 根目录
    默认配置:Spring Boot 内置了一些默认配置,如 application.properties 和
    application.yml,如果没有指定其他配置文件,则会使用这些默认配置。

需要注意的是,如果存在多个配置文件,它们会被合并成一个配置文件。例如,如果同时存在 application.properties 和 application.yml 文件,则它们的配置项会被合并到一个统一的配置文件中。同时,如果多个配置项具有相同的属性名,后面的配置文件中的值会覆盖前面的配置文件中的值。


总结

以上就是便是springboot加载配置文件的全部流程,有不清楚的可以在评论区沟通。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值