springboot配置文件的加载顺序解析

下面给出完整的“springboot配置文件的加载顺序解析”攻略。

配置文件加载规则

在Spring Boot应用启动时,会加载一组规则,来确定加载哪些属性、哪些配置文件。按照如下的加载规则:

  1. 所有指定的配置文件会按照以下顺序读取:

  2. file:./config/ 目录下的全部配置文件

  3. file:./ 目录下的全部配置文件
  4. classpath:/config/ 目录下的全部配置文件
  5. classpath:/ 目录下的全部配置文件
  6. 配置路径可以通过指定 spring.config.locationspring.config.name 系统属性来设置

  7. 配置文件会按照以下优先级读取,优先级由高到低:

  8. 项目根目录下的 bootstrap.ymlbootstrap.properties 文件

  9. 项目根目录下的 application.ymlapplication.properties 文件
  10. 在优先级低的文件中,根据 spring.profiles.active 属性来读取指定环境的配置文件

示例说明

为了进一步说明配置文件加载顺序,我们给出以下两个示例:

示例1

假设现在我们有application.yml的配置文件,内容如下:

server:
  port: 9090
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password:12345

运行该应用时,会自动读取这个文件并加载文件中的配置项。如果我们在项目根目录下设置了一个application--dev.yml配置文件,内容如下:

server:
  port: 9091
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: dev_user
    password:dev_password

如果在运行时指定了dev环境:--spring.profiles.active=dev,则会优先读取application--dev.yml中的配置,即端口号会变成9091,数据库用户名和密码会变成dev_userdev_password

示例2

假设我们在项目根目录下再设置了一个bootstrap.properties文件,内容如下:

spring.application.name=test-app
spring.cloud.config.uri=http://localhost:8888

再假设我们在http://localhost:8888上运行了一个config server,它能够提供给我们应用程序的配置文件。例如,它提供了一个test-app--dev.yml配置文件,内容如下:

server:
  port: 9092
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: dev_user
    password:dev_password

启动应用时,会先加载bootstrap.properties文件,并读取其中的spring.cloud.config.uri属性,然后通过这个uri访问配置服务器,获取最终的配置文件。在这个例子中,即会从配置服务器中获取test-app--dev.yml,并读取该文件中的配置项。最终配置将是:

server:
  port: 9092
spring:
  application:
    name: test-app
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: dev_user
    password:dev_password

以上就是Spring Boot配置文件加载顺序的完整攻略,希望对你有所帮助。

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

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

相关文章

  • oracle中索引的使用索引性能优化调整

    Oracle中索引的使用:索引性能优化调整 在Oracle数据库中,索引是提高查询性能的重要手段。但是,如果索引使用不当,反而会降低查询性能。因此,在使用Oracle索引时,需要考虑如何调整,以充分发挥索引的优势。 什么是索引? 索引是一种数据结构,用于提高数据库的查询效率。在Oracle中,索引是由数据表中的一些列构成的,它们被处理成一种数据结构,以便快速…

    其他 2023年3月29日
    00
  • Rust之Substrate框架中的pallet详解

    Rust之Substrate框架中的pallet详解 Substrate是一个用于构建区块链应用的开发框架,而pallet是Substrate中的一个重要概念。本攻略将详细讲解Substrate框架中的pallet,并提供两个示例说明。 什么是pallet? 在Substrate中,pallet是一种可插拔的模块,用于实现区块链的核心逻辑。每个pallet都…

    other 2023年7月27日
    00
  • mysql创建用户并赋予用户权限详细操作教程

    当我们在使用mysql数据库时,需要创建新用户并赋予相应的权限来管理数据库。下面是创建新用户并给予权限的详细操作步骤: 1. 使用root用户登录mysql 首先,在命令行中输入以下命令,使用root用户登录mysql: mysql -u root -p 2. 创建新用户 使用以下命令创建新用户,其中“new_user”是你指定的新用户名,“password…

    other 2023年6月27日
    00
  • IIS 运行ASP文件500内部错误解决方法大全

    为您详细讲解 IIS 运行 ASP 文件 500 内部错误解决方法大全。 1. 什么是 IIS 运行 ASP 文件 500 内部错误? 在使用 IIS 运行 ASP 文件时,可能会出现 500 内部错误的现象。这时候浏览器中会显示“500 – Internal server error. There is a problem with the resourc…

    other 2023年6月27日
    00
  • PHP中mysql_field_type()函数用法

    当使用PHP操作MySQL数据库时,mysql_field_type()函数将返回给定列的类型。以下是该函数的使用方法: 语法: string mysql_field_type ( resource $result , int $field_offset ) 参数: $result:MySQL 查询结果资源,通过函数 mysql_query() 成功返回的资…

    other 2023年6月25日
    00
  • pythonitchat模块的使用 利用图灵机器人进行微信消息自动…

    Python itchat模块的使用:利用图灵机器人进行微信消息自动回复 介绍 itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。 本篇文章将会介绍如何使用itchat模块和图灵机器人API进行微信消息的自动回复。 准备工作 首先,我们需要安装itchat模块和requests模块。 安装itchat模块:pip install …

    其他 2023年3月28日
    00
  • SharePoint 2007图文开发教程(1) 简介,安装,配置及创建Web应用程序

    SharePoint 2007图文开发教程(1) 简介,安装,配置及创建Web应用程序 简介 本教程将详细介绍如何使用SharePoint 2007进行图文开发,包括环境配置、Web应用程序的创建和基本的开发操作等内容。 安装 下载并安装SharePoint 2007软件包; 安装IIS和ASP.NET相关组件; 安装Microsoft SQL Server…

    other 2023年6月25日
    00
  • 战锤末世鼠疫2游戏卡在初始化界面怎么办?

    当战锤末世鼠疫2游戏卡在初始化界面时,可能是由于安装或配置问题引起的。以下是解决方法的完整攻略: 检查游戏文件 首先,需要检查游戏文件是否完整或出现了错误。通过以下步骤进行检查: 打开Steam 在游戏库中找到战锤末世鼠疫2游戏,右键点击游戏名称 选择“属性” 点击“本地文件”标签 点击“验证游戏文件完整性” 这将检查游戏文件是否完整或出现错误,并自动修复它…

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