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

阅读剩余 41%

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

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

相关文章

  • Android 中 Fragment 嵌套 Fragment使用存在的bug附完美解决方案

    Android 中 Fragment 嵌套 Fragment 使用存在的 bug 附完美解决方案攻略 在 Android 开发中,使用 Fragment 嵌套 Fragment 是一种常见的方式来构建复杂的用户界面。然而,这种方式可能会导致一些 bug,例如子 Fragment 的生命周期管理问题和视图层级混乱等。本攻略将详细讲解这些问题,并提供完美的解决方…

    other 2023年7月28日
    00
  • Android底部导航栏的三种风格实现

    Android底部导航栏的三种风格实现攻略 Android底部导航栏是一种常见的用户界面元素,可以提供快速导航和访问应用程序的功能。在Android中,有三种常见的底部导航栏风格实现方法,分别是:固定导航栏、可变导航栏和标签式导航栏。下面将详细介绍这三种风格的实现方法,并提供两个示例说明。 1. 固定导航栏 固定导航栏是指导航栏的图标和标签始终显示在屏幕底部…

    other 2023年8月21日
    00
  • win11本地帐号名称怎么更改? win11修改本地账户名称的技巧

    以下是win11本地账户名称修改的攻略: 1. 打开控制面板 首先,进入windows 11系统的控制面板。在搜索框中输入“控制面板”,然后点击打开。 2. 选择“用户帐户” 在控制面板中,选择“用户帐户”,然后选择“更改帐户类型”。 3. 选择要更改的本地账户 在“更改帐户类型”界面中,选择需要更改名称的本地账户。点击账户名称旁边的“更改帐户名称”按钮。 …

    other 2023年6月27日
    00
  • js清除浏览器缓存

    js清除浏览器缓存 浏览器缓存是用来加速网站加载速度的重要技术之一。但是,在开发网站时有时需要清除浏览器缓存以获取最新的网页资源,特别是在开发测试环境中。 下面我们简介几种使用JavaScript清除浏览器缓存的方法: 1. 刷新页面 最简单的方法是通过重新加载页面来清除浏览器缓存。可以通过需要清除缓存的页面上添加一个按钮或者在键盘上按下F5键或者Ctrl+…

    其他 2023年3月29日
    00
  • pycharm 设置项目的根目录教程

    PyCharm 是一款非常流行的 Python 集成开发环境(IDE),能够提供方便快捷的编程环境和强大的功能工具,同时支持多种操作系统和版本。其中,设置项目的根目录是一项非常重要的操作,可以决定项目文件的组织方式和路径,对于提高开发效率和管理项目非常有帮助。 下面是 PyCharm 设置项目的根目录教程的完整攻略: 1. 创建新项目并设置根目录 步骤: 在…

    other 2023年6月27日
    00
  • C语言中scanf的用法举例

    让我们开始介绍C语言中scanf的用法。 什么是scanf? scanf函数是C语言中的一个标准库函数,用于从标准输入中读取一定格式的数据。其函数原型为: int scanf(const char *format, …) 我们通常调用scanf函数时,需要向其传递一个格式字符串,以指明我们要读取的数据的格式,此外,我们还需要传递一个或多个指向我们要存储读…

    other 2023年6月27日
    00
  • Java私有构造器使用方法示例

    Java私有构造器使用方法示例攻略 在Java中,私有构造器是一种特殊的构造器,它只能在类的内部被访问和调用。私有构造器通常用于实现单例模式、工具类或者禁止实例化的类。本攻略将详细讲解如何使用私有构造器,并提供两个示例说明。 使用私有构造器的步骤 以下是使用私有构造器的步骤: 在类中声明一个私有构造器。私有构造器的访问修饰符为private,这样它就只能在类…

    other 2023年8月6日
    00
  • pip安装yaml

    以下是安装yaml模块的完整攻略,包括两个示例说明。 步骤 以下是安装yaml模块的基本步骤: 确认已安装pip。 在终端中输入pip –version如果输出pip的版本信息,则说明pip已安装。如果未安装,可以参考pip官方文档进行安装。 安装yaml模块。 在终端中输入pip install pyyaml,等待安装完成。 验证安装。 在终端中输入py…

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