:Springboot项目当中配置的优先级以及属性配置的常见方式

美团二面:SpringBoot读取配置优先级顺序是什么? 理解并合理运用Spring Boot配置加载的优先级,对于保障应用的安全性、可维护性以及降低部署复杂度至关重要。特别是在大规模微服务架构中,合理的配置管理和迁移对于整体系统的稳定性有着不可忽视的作用。 阅读详情

SpringBoot项目当中支持的三类配置文件:

  • application.properties

  • application.yml

  • application.yaml


     

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

     application.properties


  • server.port=8081
     

    application.yml


  • server:
       port: 8082
    ~~~

     application.yaml


  • server:
       port: 8083
     

    我们启动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)

       ~~~shell
       -Dserver.port=9000
       ~~~

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

       ~~~shell
       --server.port=10010
       ~~~

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

  • - 编辑启动程序的配置信息

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

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

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

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

    ~~~shell
    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 (基于官网骨架创建项目,会自动添加该插件)

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

    - application.yaml(忽略)
    - application.yml
    - application.properties
    - java系统属性(-Dxxx=xxx)
    - 命令行参数(--xxx=xxx)

SpringBoot中配置文件优先级和有哪些方式获取配置文件中的信息 SpringBoot中配置文件优先级和有哪些方式获取配置文件中的信息 一、SpringBoot中配置文件的优先级 1、file: ./config/ (./ 表示当前路径下 file表示是当前项目) 2、file: ./ 3、classpath:config/ 4、classpath: 从上到下,优先级依次递减! 各配置文件之间的特性: ①: 如果配置相同的东西 ... 阅读详情

相关推荐

Spring编程:springboot属性配置和属性优先级

Spring Boot 允许我们外部化程序的配置,以便我们可以在不同的环境中使用相同的应用代码。我们可以使用 properties、YAML、环境变量、命令行参数进行外部化配置。配置的属性值可以通过 @Value 注解直接注入到 beans 中,通过 Spring 环境抽象访问;也可以通过 @ConfigurationProperties 绑定到结构化对象中。 Spring Boot 使用一个非常...

天将降大任于是人 1831

SpringBoot - 配置文件的优先级

在同一级目录下(除后缀外其他部分都相同)配置文件的优先级:properties(最高) > yml > yaml(最低), 优先级高的配置会覆盖优先级低的配置。

记录并分享 7441

FPGA优质开源项目 – UDP万兆光纤以太网通信

本文开源一个FPGA项目:UDP万兆光通信。文章末尾有该工程源码获取方式,有需要的小伙伴可以点赞、分享支持一下~

cjx_csdn的博客 4766

【Java Web】014 -- SpringBoot原理(配置优先级、Bean管理、SpringBoot原理)

SpringBoot原理(配置优先级、Bean管理、SpringBoot原理),内容注意包括:配置文件(.properties/.yml/.yaml)的执行优先级,Bean管理(获取bean的方法、bean的作用域、第三方bean)、SpringBoot原理(起步依赖、自动配置)等。

汤姆lazy的优快云博客 5362

无人机飞控算法开发实战:从零到一构建企业级飞控系统

本文系统介绍了无人机飞控算法开发的完整流程,包括飞行动力学模型建立、传感器校准与数据融合、主流控制算法实现(PID、ADRC、EKF)以及企业级飞控系统架构设计。通过结合开源飞控框架(如PX4)和实际工程经验,提供了完整的代码实现示例,帮助学者从零开始掌握无人机飞控开发的核心技术。文中详细讲解了四旋翼无人机的动力学模型、传感器校准方法、EKF状态估计算法、PID和ADRC控制算法的实现,以及MAVLink通信协议的集成。最后,总结了完整的飞控系统开发流程和未来发展趋势。

全栈 3402

GNU Radio系列教程(一):什么是GNU Radio?为什么我需要用GNU Radio?

目录 一、什么是软件无线电? 二、GNU Radio到底能做什么事情? 三、我如果不精通编程,还能用GNU Radio吗? 四、GNU Radio使用需要授权吗? 五、基于GNU Radio,人们已经做了取得了哪些成果? 六、数字信号处理、基带、时钟同步…这些名词是什么意思? 七、有用的链接和联系方式 GNU Radio是一个免费的开源软件工具包,该工具包提供了可用于软件无线电的信号处理模块。基于一些通用的射频前端设备,该工具包可以用来实现软件无线电系统。此外,该工具包也可以用于单纯...

无线通信实验室 1万+

配置文件加载的优先级(由高到低)

2.xxx.properties 覆盖xxx.yml , xxx.properties 优先级 xxx.properties 高于xxx.yml。1.application.xxx 覆盖 bootstrap.xxx,优先级bootstrap.xxx高于application.xxx。1.如果工程中同时存在xxx.properties文件和xxx.yml文件,优先使用xxx.properties文件中的配置。3.propertie的配置文件注释不能使用中文,而在yml中可以使用中文注释。

qq_40039624的博客 1241

Win11网络卡顿?用Wireshark抓包5分钟定位问题(保姆级实战)

本文详细介绍了如何使用Wireshark在Win11系统中快速定位网络卡顿问题。通过5分钟抓包分析,作者成功发现TCP重传率高达37%的罪魁祸首,并提供了从准备工作到实战分析的保姆级教程,帮助用户解决游戏卡顿、视频会议延迟等常见网络问题。

weixin_28839629的博客 306

java配置文件优先级_Springboot 中配置文件的优先级和加载顺序

1. 若application.yml和bootStrap.yml在同一目录下,则bootStrap.yml的加载顺序要高于application.yml,即bootStrap.yml 会优先被加载。原理:bootstrap.yml 用于应用程序上下文的引导阶段。bootstrap.yml 由父Spring ApplicationContext加载。•bootstrap.yml 可以理解成...

weixin_31186111的博客 2264

ZYNQ平台上基于SGMII接口的IEEE1588/PTP协议高效实现方案

本文深入探讨了在Xilinx ZYNQ平台上,利用SGMII接口实现高精度IEEE1588/PTP协议的方案。通过将硬件时间戳单元集成在PL端的AXI以太网子系统IP核中,该方案绕过了软件协议栈和外部PHY的延迟,实现了亚微秒级的时间同步精度。文章详细解析了硬件设计、Vivado IP配置、Linux驱动移植及PTP协议栈部署等关键步骤,为工业控制、通信等领域的高精度网络同步提供了高效、灵活的解决路径。

q5r6s7的博客 604

【知识分享】IBIS 建模指南 03

本文介绍了差分缓冲器的数据提取方法,重点分析了差分系统与单端系统的核心差异。文章详细阐述了差分接收机和驱动器的结构特点、工作原理及建模方法,指出全差分结构具有优异的电源噪声抑制能力。针对IBIS建模规范,作者提出了三维I-V曲面数据提取技术,并介绍了共模/差模电流分离、片上端接处理以及V-T表生成的解决方案。文章还探讨了差分电容(C_diff)的测量方法和数据简化策略,为复杂差分缓冲器的精确建模提供了系统化的技术路径。

一只豌豆象的博客 1281

SpringBoot Properties & YML文件的优先级

configTomcat默认端口8080。

MyFreeIT 1180

Vue3 - 手机移动端H5网页强力解决弹起软键盘后页面被挤压变形或页面整体上移问题,点击input输入框键盘弹出底部被上推往上顶遮挡及各种问题(兼容安卓苹果ios手机,微信公众号网页微信内置浏览器)

vue3,h5网页,input输入框组件,vue3 h5软键盘弹出,vue3输入框,键盘弹起时页面整体上移问题,uni,H5页面,解决软键盘弹起页面被挤压、被往顶的问题,解决vue3输入框,键盘弹起时页面整体上移问题,vue3调用手机系统软键盘,页面窗口被顶起,布局定位失效,解决VUE3软键盘弹起导致页面fixed定位元素被顶上去,输入法软键盘弹起,窗口顶起,变形解决办法,Vue中input组件在IOS设备上弹出软键盘时页面整体上移问题的解决方案,以及input组件聚焦后弹出软键盘固定在,Vue3软键盘把界

🏆 前端领域优质创作者 1万+

JavaWeb——23 配置文件拓展

讲解了SpringBoot的配置文件优先级,还讲解了其它两种配置方式,即Java系统属性配置和命令行参数。

念头通达 689

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

【代码】pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?

虫无涯的博客 1390

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot属性配置优先级

因此,在没有使用命令行参数的情况下,应用程序的属性值将是"Hello from myapp.properties",因为myapp.properties是最高优先级的属性源。如果我们删除myapp.properties文件,则属性值将变为"Hello from bootstrap.properties",因为bootstrap.properties是次高优先级的属性源。在Spring Boot中,应用程序可以使用多种方式来配置。

慢慢来~ 1785

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringBoot项目配置方式及优先级

SpringBoot项目配置方式及优先级

小何的博客 3008

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot项目部署、属性配置方式及多环境开发

遇到的问题: 打包过程中遇到test测试错误 java在IDEA编辑的无异常,但是运行时报错: Error: A JNI error has occurred, please check your installation and try again Exception in thread “main” 这个错误信息表明你正在尝试运行的Java程序是使用一个较新版本的Java(Java 17,由class file version 61.0表示)编译的,而你当前的Java运行环境只支持到Java 8(由c

m0_73739654的博客 1948

springBoot项目配置文件加载优先级及同配置覆盖问题

springBoot项目配置文件加载优先级及同配置覆盖问题

天下唯一的利哥哥的博客 9697

重学SpringBoot3-各种配置的优先级对比

Spring Boot 的核心设计之一是“约定优于配置”(Convention Over Configuration),这使得它能够根据默认值和用户提供的配置快速启动应用程序。然而,在实际开发中,应用的配置可能来自多个来源。理解这些配置来源的优先级非常重要,以便在配置冲突时确保程序按预期运行。 本文将详细介绍 Spring Boot 3 中的各种配置来源及其优先级,并提供实际案例和最佳实践。

CoderJia的学习之路 2163

SpringBoot 配置优先级学习

Java 系统属性使用-Dxxx=xxx格式设置。命令行参数使用--xxx=xxx格式设置。SpringBoot 提供了灵活多样的配置方式,同时通过优先级规则避免配置冲突。在实际开发中,建议:在项目开发阶段,优先使用文件管理配置。在部署或测试阶段,根据需要通过 Java 系统属性或命令行参数临时覆盖配置。熟悉并遵循优先级规则,确保项目在不同环境中的配置一致性与灵活性。

zzb1580的博客 799

【第三篇】 SpringBoot项目中的属性配置

SpringBoot支持多种配置文件格式,包括application.properties、yml和yaml。application.properties是键值对结构,常用于简单配置,如设置服务器端口。yml和yaml文件格式相同,使用缩进表示层级,适合复杂配置。在SpringBoot中,可以通过@Value注解、Environment类或自定义对象映射来读取配置属性。

qq1743177790的博客 1404

SpringBoot配置属性加载优先级及顺序

SpringBoot配置属性加载优先级及顺序 在您的主目录(当 devtools 被激活,则为 ~/.spring-boot-devtools.properties )中的 Devtools 全局设置属性。 在测试中使用到的 @TestPropertySource 注解。 在测试中使用到的 properties 属性,可以是 @SpringBootTest和用于测试应用程序某部分的测试注解。 命...

胡涵洋的博客 1201

SpringBoot读取配置按什么优先级顺序?

在Spring Boot生态系统中,配置属性可以从各种来源获取,比如:Java属性文件、YAML文件、环境变量、命令行参数等。这些配置属性能够在运行时动态注入到Bean中,极大地提高了系统的可扩展性和可配置性。然而,为了确保一致性和防止配置冲突,Spring Boot在加载这些外部配置时遵循一套严格的优先级顺序。掌握这套优先级规则至关重要,因为它直接影响着最终生效的配置属性值,进而决定了应用程序的行为模式。

xiaocai 2518

SpringBoot 项目中 yml 配置文件的所有属性引用 / 加载方式

通过实现 SpringBoot 的或接口,自定义配置加载逻辑(如从数据库、Redis、自定义文件读取),优先级最高。核心引用语法:SpringBoot 配置引用统一用${key:默认值},仅 pom.xml 资源过滤用@key@;优先级关键:命令行参数 > 系统属性(-D) > 环境变量(Docker/K8s) > 配置中心 > 外部配置文件 > 项目内配置 > 内置默认;场景适配本地开发:用项目内分环境配置(dev.yml);

jinjiashui的博客 1155

JavaWeb——SpringBoot-配置优先级(三种常见配置文件:properties、yml、yaml,Java 系统属性配置,命令行参数配置,打包运行时如何设置端口)

三种常见配置文件 application.properties application.yml application.yaml 这三种格式都可以用来配置属性。但是在项目开发时,推荐统一使用一种格式的配置。 优先级从高到低 命令行参数(Program Arguments) Java 系统属性(VM options) application.properties application.yml application.yaml

li13437542099的博客 1239
上一篇: 第三方bean 注入
下一篇: 引入进来的第三方依赖当中的bean以及配置类不生效
一只会叫的兽
博客等级 码龄3年 117粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值