简单了解springboot加载配置文件顺序

下面就是关于“简单了解springboot加载配置文件顺序”的详细攻略。

配置文件的加载顺序

SpringBoot应用在启动时会从多个地方读取配置信息,这些配置信息可能会来自于YAML文件、properties文件、环境变量、命令行参数等。这些配置信息的加载顺序是比较重要的,因为如果在加载配置信息时发生了冲突,就会影响到应用的运行。

根据SpringBoot官方文档的描述,SpringBoot会按照以下顺序来加载配置信息:

  1. 在 SpringApplication 引导类所在的目录下的 /config 文件夹中查找。
  2. 在类路径中查找,包括 jar 包中的 META-INF/spring.factories 文件中 SpringApplicationInitializer 所引用的配置文件以及总类路径下的 application.properties(application.yml) 文件。
  3. 通过 spring.config.namespring.config.location 确定的指定位置来加载。

上面的顺序是从高到低的顺序,也就是说,如果在高优先级的目录下找到了配置文件,就不会继续往下寻找了。

接下来我们来通过两个示例来详细解释一下这个加载顺序。

示例一

假设我们的项目结构如下:

.
├── src
│   ├── main
│   │   ├── java
│   │   ├── resources
│   │   │   ├── application.properties
│   │   │   └── config
│   │   │       └── application.yml

同样的配置在 application.propertiesapplication.yml 中都存在:

application.properties 中的配置:

name=hello

application.yml 中的配置:

name: world

那么根据以上的加载顺序,应用启动的时候会加载优先级高的 /config 目录下的 application.yml 文件,因此,name的值为"world",你可以在任意一个地方通过@Value("${name}")注解来获取这个值。

示例二

接下来,我们考虑另外一种情况:

假设我们的项目结构如下:

.
└── myproject.jar
    ├── application.yml
    └── config
        └── application.properties

同样的配置在 application.propertiesapplication.yml 中都存在:

application.properties 中的配置:

name=hello

application.yml 中的配置:

name: world

由于 /config 目录下的 application.properties 优先级更高,因此启动的时候优先采用name=hello的配置,而不是name=world的配置。

总结

综上所述,SpringBoot会根据上述的优先级来加载并覆盖相应的配置文件,由于配置文件采用了不同的格式,因此,我们可以采用不同的配置文件来适应不同的需求,在实际的开发工作中应该充分了解这种加载顺序,并且灵活地应用到我们的项目中去。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单了解springboot加载配置文件顺序 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Android Binder进程间通信工具AIDL使用示例深入分析

    Android Binder进程间通信是Android系统中非常重要的一部分,AIDL是Android Interface Definition Language的缩写,是用来描述服务器进程和客户端进程之间通信接口的一种语言。本文将详细讲解如何使用AIDL实现进程间通信,并提供两个示例说明供读者参考。 一、AIDL概述 AIDL是Android系统中基于Bi…

    other 2023年6月27日
    00
  • Win7系统中的wmi控件是什么?有什么用?

    Win7系统中的WMI控件是指Windows Management Instrumentation(Windows管理规范)控件。它是在Windows系统中经常使用的管理技术,允许管理人员通过微软公布的命令行界面(WMI)来管理域、网络和操作系统。 目前,WMI已被广泛采用,可用于监视和控制各种操作系统和应用程序。下面,我将为您介绍WMI控件的主要作用、使用…

    other 2023年6月27日
    00
  • 深入讲解iOS开发中的UIViewController

    当我们开始学习iOS开发时,UIViewController是必须掌握的基本概念之一。UIViewController被称为MVC(Model-View-Controller)架构模式的视图控制器部分,负责管理视图的展示和行为。 下面是深入讲解UIViewController的完整攻略和两个示例说明。 什么是UIViewController? UIViewC…

    other 2023年6月27日
    00
  • mac更换鼠标指针样式_mousecape教程

    以下是关于“Mac更换鼠标指针样式_Mousecape教程”的完整攻略: 什么是Mousecape? Mousecape是一款Mac应用程序,它可以帮助您更改鼠标指针的样式。它提供了一个简单的界面,可以让您选择和安装各种鼠标指针主题。 如何使用Mousecape更换鼠标指针样式? 使用Mousecape更换鼠标指针样式的步骤如下: 下载和安装Mousecap…

    other 2023年5月6日
    00
  • PHP封装请求类实例分析【基于Yii框架】

    “PHP封装请求类实例分析【基于Yii框架】”这篇文章是介绍在Yii框架里如何封装一个请求类,可以用来处理GET和POST请求。 首先我们需要创建一个Request类。在Yii框架中,可以在components目录下新建一个Request.php文件,然后引入Yii框架的Request类,代码如下: <?php namespace app\compon…

    other 2023年6月25日
    00
  • Vue2 this 能够直接获取到 data 和 methods 的原理分析

    在Vue2实例中,this能够直接获取到data和methods是因为Vue中使用了ES5中的Object.defineProperty()方法,通过该方法定义了data和methods的属性,使其变得可观察,当数据或方法发生改变时,能够自动响应DOM变化。下面给出两个示例来详细讲解该原理。 示例一:data属性的实现原理 <div id="…

    other 2023年6月26日
    00
  • redhatenterpriselinux8.0安装

    Red Hat Enterprise Linux 8.0 安装 Red Hat Enterprise Linux (RHEL) 是一款商业化的 Linux 操作系统。本文章将详细介绍 Red Hat Enterprise Linux 8.0 的安装步骤。 下载 Red Hat Enterprise Linux 8.0 首先,需要从 Red Hat 官网下载 …

    其他 2023年3月28日
    00
  • IP地址自动修改的功能移植

    IP地址自动修改的功能移植攻略 简介 IP地址自动修改的功能移植是指将一个已经存在的IP地址自动修改的功能移植到另一个系统或应用程序中。这个功能可以用于自动更新网络设备的IP地址,提高网络管理的效率。下面是一个详细的攻略,包含了移植过程中的几个关键步骤和示例说明。 步骤 1. 确定目标系统和应用程序 首先,确定需要将IP地址自动修改功能移植到的目标系统和应用…

    other 2023年7月29日
    00
合作推广
合作推广
分享本页
返回顶部