一问详解SpringBoot配置文件优先级
作者:yfs1024 发布时间:2023-01-08 05:40:14
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两种配置文件同时存在
优先级:
properties文件 > yml > yaml
注意事项:虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置。(yml是主流)
打包文件:
这个时候就会在target目录中生成一个jar包. 此时就可以通过在jar包目录的cmd下输入java -jar jar包名
问题: 如果在运行jar包的时候,当前的端口被占用怎么解决,总不能重新打开吧?
在SpringBoot项目当中除了以上3种配置文件外,SpringBoot为了增强程序的扩展性,除了支持配置文件的配置方式以外,还支持另外两种常见的配置方式:
Java系统属性配置 (格式: -Dkey=value)
-Dserver.port=9000
命令行参数 (格式:–key=value) (其他参数的配置一模一样,只是key不同而已)
--server.port=10010
这样我们就可以通过在启动的时候的命令指定:
java -Dserver.port=9000 -jar XXXXX.jar --server.port=10010
运行jar程序:
同时设置Java系统属性和命令行参数
仅设置Java系统属性
注意事项:
Springboot项目进行打包时,需要引入插件 spring-boot-maven-plugin (基于官网骨架创建项目,会自动添加该插件)
在SpringBoot项目当中,常见的属性配置方式有5种, 3种配置文件,加上2种外部属性的配置(Java系统属性、命令行参数)。通过以上的测试,我们也得出了优先级(从低到高):
application.yaml(忽略)
application.yml
application.properties
java系统属性(-Dxxx=xxx)
命令行参数(–xxx=xxx)
来源:https://blog.csdn.net/qq_47910339/article/details/129964795
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 基于IntelliJ Platform Plugin搭建环境步骤File->New->Project选择IntelliJ Pla
- 调研了一下目前的路由框架,ARouter(阿里的),ActivityRouter都使用了apt技术 编译时注解,个人想法是一口吃不成胖子,先
- 一、项目简述本系统功能包括: 系统管理,招生计划,学生管理,录取结果,自动分配,调剂管理等等。二、项目运行环境配置:Jdk1.8 + Tom
- 1.后台参数校验Spring Validation验证框架对参数的验证机制提供了@Validated(Spring JSR-303规范,是标
- 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个
- 我们用NuGet还原.NET Core项目会报以下错误:error NETSDK1064: 未找到版本为 1.8.2 的包 BouncyCa
- /// <summary> /// 字符串转16进制字节数组 /// </summary> /// <para
- 用java swing写的一个简单的五子棋游戏。下面是Main.java。package com.crossing.main;import
- 1.问题引出源码: public static void main(String[] args) { List&l
- Android 判断SIM卡属于哪个移动运营商第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信TelephonyMan
- 1.简介使用线程池可以避免线程的频繁创建以及销毁。JAVA中提供的用于实现线程池的API:Executor、ExecutorService、
- 在Java的学习中,涉及到两个系统环境变量path和classpath一. path环境变量path环境变量是系统环境变量的一种,它用于保存
- 日常工作中 Map 绝对是我们 Java 程序员高频使用的一种数据结构,那 Map 都有哪些遍历方式呢?这篇文章阿粉就带大家看一下,看看你经
- 前言项目中有使用到水印效果,如下图所示。在实现过程中,最终选用ItemDecoration来实现,其中有两大步骤:自定义Drawable来完
- 先要把word或ppt转换为pdf; 以pdf的格式展示,防止文件拷贝。转换方法1、安装Word、Excel、PowerPoint组件注意:
- 若干年前在使用SpringMVC的时候,发现springMVC可以把HttpSession,HttpRequest组件化注入:@Autowi
- 1、异常分类通常分为三类:系统异常(SystemException),业务异常(BusinessException)和其他异常(Except
- indexof方法:注解:indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1
- 目录1、this代表了()的对象引用,super表示的是当前对象的()对象?2、输出内容是:3、下面程序的输出是:()4、执行下列代码的输出
- 这篇博客将梳理一下.NET中4个Timer类,及其用法。1. System.Threading.Timerpublic Timer(Time