外部配置优先级

news2025/3/15 7:19:35

Externalized Configuration

  • Spring Boot允许您外部化您的配置,以便您可以在不同的环境中使用相同的应用程序代码。您可以使用各种外部配置源,包括Java属性文件、YAML文件、环境变量和命令行参数。

  • 属性值可以通过使用@Value注释直接注入到bean中,通过Spring的环境抽象进行访问,或者通过@ConfigurationProperties绑定到结构化对象。

  • Spring Boot使用一个非常特殊的PropertySource顺序,旨在允许合理的值重写。以后的属性源可以覆盖在以前的属性源中定义的值。来源按下列顺序审议:参考官网地址
    在这里插入图片描述
    解释:

  1. 默认属性(通过设置SpringApplication.setDefaultProperties指定)。
  2. @PropertySource注释在你的@Configuration类上。请注意,在刷新应用程序上下文之前,不会将此类属性源添加到环境中。这对于配置某些属性(如日志记录)来说太晚了。*和spring.main。*在刷新开始前读取。
  3. 配置数据(如应用程序)。属性文件)。
  4. RandomValuePropertySource只具有random.*中的属性。
  5. 操作系统环境变量。
  6. Java系统属性(System. getproperties())。
  7. 来自java:comp/env的JNDI属性。
  8. ServletContext初始化参数。
  9. ServletConfig初始化参数。
  10. 来自SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的内联JSON)。
  11. 命令行参数。
  12. 属性。可以在@SpringBootTest和测试注释中获得,用于测试应用程序的特定部分。
  13. 测试中的@DynamicPropertySource注释。
  14. 测试上的@TestPropertySource注释。
  15. Devtools的全局设置属性在$HOME/。devtools处于活动状态时,配置/spring-boot目录。
    配置数据文件按以下顺序考虑:
  16. 打包在jar(应用程序)中的应用程序属性。属性和YAML变体)。(classpath:application.yml )
  17. 打包在jar中的特定于配置文件的应用程序属性(application-{profile})。属性和YAML变体)。classpath:config/application.yml
  18. 包中的jar(应用程序)之外的应用程序属性。属性和YAML变体)。(file :application.yml)
  19. 包中的jar之外的特定于配置文件的应用程序属性(application-{profile})。属性和YAML变体)。(file :config/application.yml )
    重复就看优先级,优先级高覆盖优先级低的;
    不重复则合并

案例

  1. 通过设置SpringApplication.setDefaultProperties指定
    在这里插入图片描述
    在这里插入图片描述
    含义:有激活的环境就选择,没有激活的环境就选择自己设置的默认dev。
    如果自己在yml中设置了该属性,因为yml的优先级比这个大,所以yml覆盖此处的设置。
    如果自己在yml中没有设置该属性,此处的设置会起作用。
    这些设置都是通过内部bean,有一个Environment对象,不是通过主启动类中的args。
  2. Java System
    在这里插入图片描述
    在这里插入图片描述
  3. 命令行参数
java –jar springboot.jar –-spring.profiles.active=pro

在这里插入图片描述
在这里插入图片描述

  • 临时属性通过主启动类中args加载
  • 使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性
  • 临时属性添加方式:java –jar 工程名.jar –-属性名=值
  • 多个临时属性之间使用空格分隔
  • 临时属性必须是当前boot工程支持的属性,否则设置无效.
  1. 临时属性设置(开发环境)
    带属性启动SpringBoot程序,为程序添加运行属性
    在这里插入图片描述
    通过编程形式带参数启动SpringBoot程序,为程序添加运行参数。args就是用来接收传过来的参数,和命令行参数一样也是通过主启动类中args加载。我们也可以不使用传过来的args,自己手动配置arg,达到同样的效果,这样的话就算通过外部传的参数也不加载,参数不起作用,因为使用的是arg,而不是args。
    在这里插入图片描述
  2. 不携带参数启动SpringBoot程序(接收外部传的参数但是不携带参数启动)
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网上不小心订了电话卡怎么退?细述流量卡的退订方法和影响。

如果在网上不小心订购了流量卡,又不想要了,该怎么办呢?别着急,这篇文章教你如何解决。 ​申请的流量卡不想要了怎么办?三种方法看您适合哪一种? 如果没有收到流量卡,那么您需要找客服进行取消…

centos7下mysqldump定时备份数据库

单节点的MySQL没有高可用和容灾性,服务器可能因为突然断电导致MySQL数据不完整而无法启动的严重事故,所以建议定时备份数据库 环境: centos7.9,mysql8.0.27 在/etc/profile中添加了mysql的环境变量,启动更方便 请视…

融云 CallPlus SDK 上线!1V1 音视频、远程服务类应用的实现利器

点击报名,9 月 21 日融云直播课 近期,融云新一代音视频通话场景化 SDK CallPlus 将正式上线!关注【融云全球互联网通信云】了解更多 融云 CallPlus 完整封装了拨打、振铃、接听、挂断等整套呼叫流程,支持一对一及群组多人音视频通…

java对象创建的过程

1、检查指令的参数是否能在常量池中定位到一个类的符号引用 2、检查此符号引用代表的类是否已被加载、解析和初始化过。如果没有,就先执行相应的类加载过程 3、类加载检查通过后,接下来虚拟机将为新生对象分配内存。 4、内存分配完成之后,…

【文末送书】典型IO接口与总线 | SPI、IIC、UART、GPIO

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

Three.js实现模型,模型材质可拖拽效果 DragControls

Three.js提供了一个拖拽的API DragControls 用于实现模型材质拖拽效果 DragControls:是一个用于在Three.js中实现拖拽控制的辅助类。它简化了在Three.js中实现拖拽物体的过程。 DragControls的构造函数接受三个参数: objects:一个包含需要…

(AS笔记)上传aar包到Maven中央仓库

目录 一、SonaType账户注册与登录 (1)注册 (2)登录 二、创建工单 (1)Github子域名验证 (2)自定义域名验证 三、登录Nexus Repository Manager 四、GPG签名生成和发布 五、Andr…

PHP8内置函数中的数学函数-PHP8知识详解

php8中提供了大量的内置函数,以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍…

【LeetCode每日一题】——1365.有多少小于当前数字的数字

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 简单 三【题目编号】 1365.有多少小于当前数字的数字 四【题目描述】 …

RHCE——十一、NFS服务器

NFS服务器 一、简介1、NFS背景介绍2、生产应用场景 二、NFS工作原理1、示例图2、流程 三、NFS的使用1、安装2、配置文件3、主配置文件分析3.1 实验1 4、NFS账户映射4.1 实验24.2 实验3 四、autofs自动挂载服务1、产生原因2、安装3、配置文件分析4、实验45、实验5 一、简介 1、…

【c++】VC编译出的版本,发布版本如何使用

目录 使用release类型进行发布 应用程序无法正常启动 0xc000007b 版本对应 vcruntime140d 应用版本 参考文章 使用release类型进行发布 应用程序无法正常启动 0xc000007b "应用程序无法正常启动 0xc000007b" 错误通常是一个 Windows 应用程序错误&#xf…

手机拍摄的视频太大怎么压缩?快来学视频压缩

随着手机的普及和视频拍摄的简单化,我们经常会在手机上一不小心就拍摄出大量的视频内容。但这些视频文件往往会占用大量的存储空间,给我们的日常生活带来不便。那么,如何压缩这些过大的视频文件呢? 视频压缩的主要原理是利用视频序…

易云维®FMCS厂务系统创造工厂全新的“数字低碳智能”应用场景

近年来,新一代信息技术的高速发展为传统工业与制造业领域带来了新的机遇。信息技术加持下的制造技术发展出了新的生产方式、产业形态与管理模式。通过搭建FMCS厂务系统进行数字化转型来实现数据互联互通与业务高效协同,助力企业向安全、绿色、节能、高效…

软件测试全生命周期全流程解析

一、软件测试的基本概念 1.测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 2.软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批 二、软…

winrar代码执行漏洞CVE-2023-38831复现

工具下载: winrar5.50:https://www.rarlab.com/rar/winrar-x64-550.exe 7-z:https://www.7-zip.org/ 创建文件夹目录如下 测试- image(文件夹,此命名随意)- xingkong.png(一张图片&#xff0c…

【Unity3D赛车游戏】【七】如何在Unity中为汽车添加自动变速箱自动换挡?

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

智能工单系统哪家好?如何提升企业维修效率与管理效能?

在互联网信息时代,许多行业已经完成了电子信息化的转变,并从中受益。对于公司而言,SaaS云产品系列提供了更低的成本、更强大的功能以及更好的客户体验。那么,与传统报修工单相比,智能工单有哪些优势呢? 首先…

9个至少提升50%效率的VSCODE插件

在开始编码之前,您首先需要让您的工作流程适合您。让它更高效、更漂亮、更可定制。它会节省您大量的时间和精力,因此您将有更多的能力进行编码。 无论您是前端还是后端开发人员还是高级 Java 程序员,都没关系。这篇文章对你们大多数人来说仍然…

问道管理:融资融券门槛?

融资融券是股票出资中的一种买卖方式,也是现代股市正常运作的重要机制之一。但是,由于融资融券具有利润高、危险大的特色,为了保护大多数出资者的利益,也为了确保股市的安稳运转,国家对融资融券的门槛做出了一系列规则…

一个国产存储一致性及稳定性测试工具介绍

项目地址:https://github.com/zhangyoujia/hd_write_verify 序言 hd_write_verify & hd_write_verify_dump 是测试磁盘稳定性和验证数据一致性的工具。可以测试 物理磁盘、虚拟机磁盘 等。相对于fio和vdbench等工具,此工具更加专注于数据对丢失、数…