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

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加载配置文件的全部流程,有不清楚的可以在评论区沟通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值