SpringBoot原理-配置优先级(黑马学习笔记)

配置优先级

在我们前面的课程当中,我们已经讲解了SpringBoot项目当中支持的三类配置文件:

● application.properties

● application.yml

● application.yaml

在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中的任意一种来配置都可以,那么如果项目中同时存在这三种配置文件,且都配置了同一个属性,如:Tomcat端口号,到底哪一份配置文件生效呢?

● application.properties

server.port=8081

● application.yml

server:port: 8082

● application.yaml

server:port: 8082

我们启动SpringBoot程序,测试下三个配置文件中哪个Tomcat端口号生效:

● properties,yaml,yml三种配置文件同时存在

properties、yaml、yml三种配置文件,优先级最高的是properties

● yaml、yml两种配置文件同时存在

配置文件优先级排名(从高到低):

    1.properties配置文件

    2.yml配置文件

    3.yaml配置文件

注意事项:虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置。(yml是主流)

在SpringBoot项目当中除了以上3种配置文件外,SpringBoot为了增强程序的扩展性,除了支持配置文件的配置方式以外,还支持另外两种常见的配置方式:

    1.Java系统属性配置(格式:-Dkey=value)

-Dserver.port=9000

    2.命令行参数(格式:--key=value)

--server.port=10010

那在idea当中运行程序时,如何来指定Java系统属性和命令行参数呢?

● 编辑启动程序的配置信息

重启服务,同时配置Tomcat端口(三种配置文件、系统属性、命令行参数),测试哪个Tomcat端口号生效:

删除命令行参数配置,重启SpringBoot服务:

优先级:命令行参数>系统属性参数>properties>yml参数>yaml参数

思考:如果项目已经打包上线了,这个时候我们又如何来设置Java系统属性和命令行参数呢?

java -Dserver.port=9000 -jar XXXXX.jar --server.port=10010

下面我们来演示下打包程序运行时指定Java系统属性和命令行参数:

    1.执行maven打包指令package,把项目打成jar文件

    2.使用命令:java -jar方式运行jar文件程序

项目打包:

运行jar程序:

    ● 同时设置Java系统属性和命令行参数

    ● 仅设置Java系统属性

注意事项:

    ● SpringBoot项目进行打包时,需要引入插件spring-boot-maven-plugin(基于官网骨架创建项目,会自动添加该插件)

在SprinbgBoot项目当中,常见的属性配置方式有5种,3种配置文件,加上2种外部属性的配置(Java系统属性、命令行参数)。通过以上的测试,我们也得出了优先级(从低到高):

    ● application.yaml(忽略)

    ● application.yml

    ● application.properties

    ● java系统属性(-Dxxx=xxx)

    ● 命令行参数(--xxx=xxx)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505181.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年最新腾讯云学生专属的服务器优惠活动申请流程

2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…

AI之T2I:Stable Diffusion 3的简介、安装和使用方法、案例应用之详细攻略

AI之T2I:Stable Diffusion 3的简介、安装和使用方法、案例应用之详细攻略 目录 Stable Diffusion 3的简介 1、效果测试 官方demo 网友提供 Stable Diffusion 3的安装和使用方法 1、安装 2、使用方法 Stable Diffusion 3的案例应用 1、基础案例 Stable Diff…

【YOLO v5 v7 v8 小目标改进】中心化特征金字塔(CFP) = 特征金字塔 + 显式视觉中心(EVC)+ 全局集中调节(GCR)

中心化特征金字塔(CFP) 特征金字塔 显式视觉中心(EVC) 全局集中调节(GCR) 提出背景中心化特征金字塔(CFP)CFP 架构图问题:不同尺度的对象检测问题:有限感受…

相纸尺寸和相纸分类解释

相纸分类 高光 高光相纸俗称光面相纸,适用一般的证件用照和生活照片,表面平滑光亮。 绒面 绒面相纸(也称哑光相纸或哑光相纸),因为绒面革相纸的表面粗糙,所以绒面相纸的质地很好,表面有哑光感,没有反光…

Mybatis批量更新对象数据的两种方法

说明:遇到一次需要批量修改对象的场景。传递一个对象集合,需要根据对象ID批量修改数据库数据,使用的是MyBatis框架。查了一些资料,总结出两种实现方式。 创建Demo 首先,创建一个简单的Demo; &#xff08…

彻底搞懂回溯算法(例题详解)

目录 什么是回溯算法: 子集问题: 子集问题II(元素可重复但不可复选): 组合问题: 组合问题II(元素可重复但不可复选): 排列问题: 排列问题II(元素可重复但不可复选): 什么是回溯算法: 「回溯是递归的副产品&…

echarts vue 动画效果的水球图、波浪图教程

1、安装插件 前提是已经安装了echarts(我的版本是4.2.1) npm install echarts-liquidfill --save 我安装了3.1.0版本的,结果运行时报错"TypeError: wave.ensureState is not a function" 原因:echarts版本和echarts-l…

QT绘图

QPainter paintEvent是Qt中一个非常重要的函数,它是QWidget类的一个事件处理函数,用于处理小部件的绘制事件。当Qt认为小部件需要重绘时(例如,窗口首次出现时,大小改变时,或者调用了小部件的update()方法时…

Unity3D学习之Lua热更新解决方案(二)XLua

文章目录 1 XLua概述2 xLua导入和AB包相关准备3 C#调用Lua3.1 Lua解析器3.2 文件加载重定向3.3 Lua解析器管理器3.3.1 重定向AB包内的Lua3.3.2 获得_G大表 3.4 全局变量的获取3.5 全局函数的获取3.5.1 无参无返回3.5.2 有参有返回3.5.3 多返回值3.5.4 变长参数 3.6 List和Dicti…

DFA还原白盒AES密钥

本期内容是关于某app模拟登录的,涉及的知识点比较多,有unidbg补环境及辅助还原算法,ida中的md5以及白盒aes,fart脱壳,frida反调试 本章所有样本及资料均上传到了123云盘 llb资料官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 目录 首先抓包 fart脱壳 加密位置定位…

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量;非基变量、非基向量;基解、基可行解;四、最优解与可行解、基可行解的关系五、用例题(枚举法)巩固基解、基可行解、最优解三个概念1、例…

【JAVA】JDK内置工具之appletviewer

下载java 下载java的时候会先下载Java jdk,Java Development Kit Java开发工具包。 然后会下载jre,也就是Java Runtime Environment Java运行环境。什么是JDK、JRE?_java中的jdk,jre代表什么-CSDN博客 下载之后先找到java下的bin文件&#x…