| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 11Springboot的默认配置文件和外部配置文件及加载顺序 -> 正文阅读 |
|
[Java知识库]11Springboot的默认配置文件和外部配置文件及加载顺序 |
默认配置文件通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties 或 apllication.yml 作为其默认配置文件,我们可以在该配置文件中对项目进行配置,但这并不意味着 Spring Boot 项目中只能存在一个 application.properties 或 application.yml。 Spring Boot 项目中可以存在多个 application.properties 或 apllication.yml。
以上所有位置的配置文件都会被加载,且它们优先级依次降低,序号越小优先级越高。其次,位于相同位置的 application.properties 的优先级高于 application.yml。
示例? 001、创建一个名为 springbootdemo 的 Spring Boot 项目,并在当前项目根目录下、类路径下的 config 目录下、以及类路径下分别创建一个配置文件 application.yml,该项目结构如下图。 002、项目根路径下配置文件 application.yml 配置如下。
003、项目类路径下 config 目录下配置文件 application.yml 配置如下。
?004、项目类路径下的 application.yml 配置如下。
005、在 com.example.demo.controller 包下创建一个名为 MyController 的类,代码如下。
006、启动 Spring Boot,查看控制台输出,如下图。 根据 Spring Boot 默认配置文件优先级进行分析:
根据服务器端口和上下文路径,使用浏览器访问?http://localhost:8084/abc/test,结果如下图。 外部配置文件Spring Boot 项目中可以存在多个 application.properties 或 apllication.yml。 ? 除了默认配置文件,Spring Boot 还可以加载一些位于项目外部的配置文件。我们可以通过如下 2 个参数,指定外部配置文件的路径:
01、spring.config.location? ? ? ?我们可以先将 Spring Boot 项目打包成 JAR 文件,然后在命令行启动命令中,使用命令行参数 --spring.config.location,指定外部配置文件的路径。
? ? ? ?需要注意的是,使用该参数指定配置文件后,会使项目默认配置文件(application.properties 或 application.yml )失效,Spring Boot 将只加载指定的外部配置文件。 示例 1001. 在本地目录 D:\myConfig 下,创建一个配置文件 my-application.yml,配置如下。
002. 执行以下 mvn 命令,将?springbootdemo 项目打包成 JAR。 mvn clean package 命令执行结果如下图。 003. 打开命令行窗口,跳转到 JAR 文件所在目录,执行以下命令,其中 --spring.config.location 用于指定配置文件的新位置。
项目运行结果如下图。 ?从控制台输出可以看出:
004. 使用浏览器访问?“http://localhost:8088/test”,结果如下图。 02、spring.config.additional-location? ? ? ?我们还可以在 Spring Boot 启动时,使用命令行参数 --spring.config.additional-location 来加载外部配置文件。
? ? ? ?但与?--spring.config.location 不同,--spring.config.additional-location 不会使项目默认的配置文件失效,使用该命令行参数添加的外部配置文件会与项目默认的配置文件共同生效,形成互补配置,且其优先级是最高的,比所有默认配置文件的优先级都高。 示例 2001. 将?springbootdemo 打包为 JAR 文件,打开命令行窗口,跳转到该项目 JAR 所在目录下,执行以下命令启动该项目。
结果如下图。 注意:Maven 对项目进行打包时,位于项目根目录下的配置文件是无法被打包进项目的 JAR 包的,因此位于根目录下的默认配置文件无法在 JAR 中生效,即该项目将只加载指定的外部配置文件和项目类路径(classpath)下的默认配置文件,它们的加载优先级顺序为:
根据配置文件优先级分析可知:
002. 使用浏览器访问 “http://localhost:8088/helloworld/test”,结果如下图。
Spring Boot配置加载顺序 (详解)? ? ? ?Spring Boot 不仅可以通过配置文件进行配置,还可以通过环境变量、命令行参数等多种形式进行配置。这些配置都可以让开发人员在不修改任何代码的前提下,直接将一套 Spring Boot? 应用程序在不同的环境中运行。 以下是常用的 Spring Boot 配置形式及其加载顺序(优先级由高到低):
? ? ? ?以上所有形式的配置都会被加载,当存在相同配置内容时,高优先级的配置会覆盖低优先级的配置;存在不同的配置内容时,高优先级和低优先级的配置内容取并集,共同生效,形成互补配置。 命令行参数Spring Boot 中的所有配置,都可以通过命令行参数进行指定,其配置形式如下。
示例 11. 在 springbootdemo? 项目启动时,使用以下命令。
命令行参数说明如下:
执行结果如下图。 配置文件Spring Boot 启动时,会自动加载 JAR 包内部及 JAR 包所在目录指定位置的配置文件(Properties 文件、YAML 文件),下图中展示了 Spring Boot 自动加载的配置文件的位置及其加载顺序,同一位置下,Properties 文件优先级高于 YAML 文件。 图 说明如下:
示例 21. 创建一个名为 mybootdemo 的 Spring Boot 项目,并在 src/main/resoources 下创建以下 4 个配置文件。
1)在 applcation.yml 文件中,指定默认服务端口号(port)为 “8080”,上下文路径(context-path)为“/mybootdemo”,并激活开发环境(dev)的 profile。
2)在 application-dev.yml 中,指定开发环境端口号为 “8081”,上下文路径为“/in-dev”,配置如下。
3)在 application-test.yml 中,指定测试环境端口号为 “8082”,上下文路径为“/in-test”,配置如下。
4)在 application-prod.yml 中,指定生产环境端口号为 “8083”,上下文路径为“/in-prod”,配置如下。
2. 执行以下 mvn 命令,将?mybootdemo 打包成 JAR,并将该 JAR 包移动到本次磁盘的某个目录下(例如 mySpringBoot 目录)。
3. 在 JAR 包所在目录下创建 application.yml ,并设置上下文路径为“/out-default”,并激活生产环境(prod)Profile。
4. 打开命令行窗口,跳转到?mySpringBoot 目录下,执行以下命令启动 Spring Boot。
启动结果如下图。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:25:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |