SpringBoot配置文件优先级

简介: 其实上述4种文件是提供给你了4种配置文件书写的位置,功能都是一样的,都是做配置的。总体上来说,4种配置文件如果都存在的话,有一个优先级的问题,说白了就是加入4个文件我都有,里面都有一样的配置,谁生效的问题。两个配置文件共存,因为config目录中的配置加载优先级比你的高,所以配置项如果和级别4里面的内容相同就覆盖了,这样是不是很简单?场景A:你作为一个开发者,你做程序的时候为了方便自己写代码,配置的数据库肯定是连接你自己本机的,咱们使用4这个级别,也就是之前一直用的application.yml。...

 配置文件的4个级别分别是:

  • 类路径下配置文件(一直使用的是这个,也就是resources目录中的application.yml文件)
  • 类路径下config目录下配置文件
  • 程序包所在目录中配置文件
  • 程序包所在目录中config目录下配置文件

       好复杂,一个一个说。其实上述4种文件是提供给你了4种配置文件书写的位置,功能都是一样的,都是做配置的。但是因为位置不同,产生了差异。总体上来说,4种配置文件如果都存在的话,有一个优先级的问题,说白了就是加入4个文件我都有,里面都有一样的配置,谁生效的问题。上面4个文件的加载优先顺序为

  1. file :config/application.yml (这个config处于程序打包完后的同级文件夹) 【最高】
  2. file :application.yml (这个配置文件同上)
  3. classpath:config/application.yml (config文件夹处于未打包时Resources下的目录)
  4. classpath:application.yml (正常SpringBoot创建的配置文件) 【最低】

那为什么设计这种多种呢?说一个最典型的应用吧。

  • 场景A:咱们作为一个开发者,咱们做程序的时候为了方便自己写代码,配置的数据库肯定是连接你自己本机的,咱们使用4这个级别,也就是之前一直用的application.yml
  • 场景B:现在项目开发到了一个阶段,要联调测试了,连接的数据库是测试服务器的数据库,肯定要换一组配置吧。你可以选择把你之前的文件中的内容都改了,目前还不麻烦。
  • 场景C:测试完了,一切OK。你继续写你的代码,你发现你原来写的配置文件被改成测试服务器的内容了,你要再改回来。现在明白了不?场景B中把你的内容都改掉了,你现在要重新改回来,以后呢?改来改去吗?

       其实解决方案很简单,用上面的3这个级别的配置文件就可以快速解决这个问题,再写一个配置就行了。两个配置文件共存,因为config目录中的配置加载优先级比你的高,所以配置项如果和级别4里面的内容相同就覆盖了,这样是不是很简单?

       级别1和2什么时候使用呢?程序打包以后就要用这个级别了,管你程序里面配置写的是什么?我的级别高,可以轻松覆盖你,就不用考虑这些配置冲突的问题了。

总结

  1. 配置文件分为4种运用场景
  • 项目类路径配置文件:服务于开发人员本机开发与测试
  • 项目类路径config目录中配置文件:服务于万恶的项目经理整体调控
  • 工程路径配置文件:服务于运维人员配置涉密线上环境
  • 工程路径config目录中配置文件:服务于运维经理整体调控
  1. 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序
  2. 程序员只负责开发
相关文章
|
1月前
|
Java 调度 Spring
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
322 0
|
1月前
|
Java
SpringBoot配置文件格式(3种)及优先级
SpringBoot配置文件格式(3种)及优先级
101 0
|
1月前
|
Java 容器 Spring
SpringBoot:详解依赖注入和使用配置文件
SpringBoot:详解依赖注入和使用配置文件
|
7天前
|
机器学习/深度学习 JSON Java
SpringBoot是如何加载配置文件的?
SpringBoot是如何加载配置文件的?
|
7天前
|
JavaScript Java 数据库连接
【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理
【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理
15 0
|
1月前
|
Java 容器 Spring
【SpringBoot:详解依赖注入和使用配置文件】
【SpringBoot:详解依赖注入和使用配置文件】
20 2
|
1月前
|
JSON JavaScript Java
SpringBoot读取配置优先级顺序是什么?
Spring Boot的外部配置加载优先级是开发者理解和管理应用程序配置的关键。它支持多种配置源,包括Java属性文件、YAML文件、环境变量、命令行参数等。配置加载顺序从低到高为:默认属性、@PropertySource加载的配置、Config Data(内部配置文件、外部配置文件)、环境变量、系统属性、Servlet容器初始化参数、SPRING_APPLICATION_JSON格式的环境变量或系统属性以及命令行参数。了解这一顺序有助于在不同环境中灵活配置和管理Spring Boot应用,确保其按预期运行。
|
1月前
|
Java Shell 测试技术
SpringBoot指定多套配置文件环境
SpringBoot指定多套配置文件环境
30 1
QGS
|
1月前
|
JSON Java 关系型数据库
手拉手Springboot获取yml配置文件信息
手拉手Springboot获取yml配置文件信息
QGS
51 1
|
1月前
|
XML JSON Java
SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
35 0