SpringBoot内部外部配置文件加载顺序解析

yizhihongxing

我将详细讲解“SpringBoot内部外部配置文件加载顺序解析”的完整攻略。

SpringBoot内部外部配置文件加载顺序解析

在Spring Boot中,应用程序的配置信息可以通过内部和外部的两种方式进行加载。对于这两种方式,Spring Boot在加载时都有着不同的顺序和用途。

内部配置文件

内部配置文件是指在Spring Boot项目中,通过application.propertiesapplication.yml两个文件来定义一些配置信息,可以通过@Value@ConfigurationProperties注解来进行读取,例如:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

这些配置信息在Spring Boot应用程序启动时会被加载,并且具有默认的优先级,即外部配置文件的优先级不会高于内部配置文件。

外部配置文件

外部配置文件是指在Spring Boot项目外,通过在运行时指定配置文件的方式进行加载。具体来说,可以通过以下几种方式来指定外部配置文件的路径:

  • 在命令行中指定:java -jar xxx.jar --spring.config.name=myapp --spring.config.location=classpath:/,file:/opt/myapp/

  • 通过环境变量指定:SPRING_CONFIG_NAME=myapp SPRING_CONFIG_LOCATION=classpath:/,file:/opt/myapp/ java -jar xxx.jar

  • 在JVM启动参数中指定:-Dspring.config.name=myapp -Dspring.config.location=classpath:/,file:/opt/myapp/

外部配置文件可以是.properties.yml格式,例如myapp.properties

server.port=8088

当存在外部配置文件时,Spring Boot会按照以下顺序逐个查找并加载:

  • /config文件夹下的application.propertiesapplication.yml

  • /目录下的application.propertiesapplication.yml

  • classpath下/config文件夹下的application.propertiesapplication.yml

  • classpath下的application.propertiesapplication.yml

  • 通过命令行参数指定的外部配置文件

  • 通过系统环境变量指定的外部配置文件

  • 通过JVM启动参数指定的外部配置文件

最后加载的配置信息具有最高优先级,会覆盖之前加载的同名配置项。

示例说明

下面通过两个示例来具体说明内部外部配置文件的加载顺序。

示例一

假设我们有一个Spring Boot项目,其默认的内部配置文件application.properties中配置了如下内容:

server.port=8080

同时,在项目外存在一个外部配置文件myapp.properties,其内容如下:

server.port=8081

那么当我们启动应用程序时,最终的配置结果是什么呢?

根据前面的讲解,我们可以得出结论,最终的端口号应该是8081,因为外部配置文件的优先级高于内部配置文件。

示例二

假设我们有一个Spring Boot项目,其默认的内部配置文件application.properties中配置了如下内容:

server.port=8080

同时,在项目外存在一个外部配置文件myapp.properties,其内容如下:

server.port=8082

现在,假设我们在启动应用程序时传入了以下命令行参数:

--spring.config.name=myapp --spring.config.location=classpath:/,file:/opt/myapp/

那么,最终的端口号会是多少呢?

根据前面的讲解,我们可以得出结论,最终的端口号应该是8082,因为命令行参数指定的外部配置文件优先级高于其他方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot内部外部配置文件加载顺序解析 - Python技术站

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

相关文章

  • linux 中如何修改时间 date

    Linux中修改时间date的完整攻略 在Linux中,可以使用date命令来修改系统时间。本文将为您提供一份详细的Linux中修改时间date的完整攻略,包括使用date命令和timedatectl命令的示例说明。 使用date命令 使用date命令可以修改系统时间。可以按照以下步骤进行操作: 打开终端:打开终端窗口。 输入命令:输入以下命令,修改系统时间…

    other 2023年5月5日
    00
  • pcb录屏工具screen2exegifcamscreentogif

    以下是PCB录屏工具Screen2ExeGifCamScreenToGif的攻略: 步骤1:了解Screen2ExeGifCamScreenToGif Screen2ExeGifCamScreenToGif是一款PCB屏工具,可以用于录制屏幕、制作GIF动画和生成执行文件。工具具有简单易用的界面和丰富的功能,可以满足不同用户的需求。 步骤2:使用Screen…

    other 2023年5月6日
    00
  • 上观新闻app如何查看版本号?上观新闻查看版本号方法

    上观新闻是一款新闻阅读类的手机应用程序,如果你想查看它的版本号,可以按照以下步骤进行操作: 打开上观新闻App:在你的手机主屏幕上找到上观新闻的图标,点击打开应用程序。 进入设置页面:在上观新闻的主界面上,通常会有一个菜单按钮或者设置按钮,点击它进入设置页面。 查找关于页面:在设置页面中,你需要找到一个关于或者帮助选项,通常它们会列在设置页面的底部。点击进入…

    other 2023年8月2日
    00
  • 微信小程序 配置文件详细介绍

    下面是“微信小程序配置文件详细介绍”的完整攻略。 微信小程序配置文件详细介绍 引言 在微信小程序开发中,配置文件十分重要。配置文件可用于配置小程序的全局变量、页面路径、底部tabbar等功能,可以帮助我们更好的管理和维护小程序。接下来,我们将详细介绍微信小程序配置文件的使用。 全局配置文件 小程序的全局配置文件为 app.json,用于配置全局性的属性,如小…

    other 2023年6月25日
    00
  • .netef框架的安装、及三种开发模式

    .NET Framework是一个由Microsoft开发的应用程序框架,用于在Windows操作系统上构建和运行应用程序。.NET Framework包括一个大型的类库和一个虚拟机,可以在多种编程语言中使用。.NET Framework的安装和使用可以分为以下三种开发模式:Windows桌面应用程序、Web应用程序和服务应用程序。以下是.NET Frame…

    other 2023年5月9日
    00
  • webpack 5.68.0版本教程示例详解

    Webpack 5.68.0版本教程示例详解 Webpack是一个现代化的JavaScript模块打包工具,它可以将多个模块打包成一个或多个bundle文件。本教程将详细介绍Webpack 5.68.0版本的使用,并提供两个示例说明。 安装Webpack 首先,我们需要安装Webpack。可以使用npm或者yarn进行安装,具体命令如下: npm insta…

    other 2023年7月29日
    00
  • C++实现LeetCode(108.将有序数组转为二叉搜索树)

    C++实现LeetCode(108.将有序数组转为二叉搜索树)攻略 题目描述 给定一个有序整数数组,转换为高度平衡的二叉搜索树。 示例 1: 输入: [-10,-3,0,5,9] 输出: 0 / \ -3 9 / / -10 5 示例 2: 输入: [1,3] 输出: 3 / 1 题目分析 这道题目需要将有序整数数组转换为二叉搜索树,要求转换后的二叉树是平衡…

    other 2023年6月27日
    00
  • js的基本数据类型与引用数据类型

    下面是关于JavaScript的基本数据类型与引用数据类型的完整攻略,包括定义、区别、使用方法和两个示例说明。 定义 JavaScript中的数据类型分为基本数据类型和引用数据类型。基本数据类型包括:数字、字符串、布尔值、null和undefined。引用数据类型包括:对象、数组和函数。 区别 基本数据类型和引用数据类型的区别在于,基本数据类型的值是简单的数…

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