【Spring Boot 初识丨七 丨外部化配置(一)】属性详解

2023-11-03

上一篇讲了 Spring Boot 的依赖注入
本篇来讲一讲Spring Boot 外部化配置
Spring Boot 初识:
【Spring Boot 初识丨一】入门实战
【Spring Boot 初识丨二】maven
【Spring Boot 初识丨三】starter
【Spring Boot 初识丨四】主应用类
【Spring Boot 初识丨五】beans
【Spring Boot 初识丨六】依赖注入

加载顺序


  Spring Boot 使用一种非常特殊的PropertySource顺序,旨在允许合理地覆盖值。后面的属性源可以覆盖前面定义的值。按以下顺序考虑来源:

  1. 默认属性(由SpringApplication.setDefaultProperties指定)。
  2. @Configuration类上的@PropertySource注释。请注意,在刷新应用程序上下文之前,不会将此类属性源添加到环境中。这对于配置某些属性为时已晚,例如在刷新开始之前读取的logging.和spring.main.
  3. 配置数据(例如application.properties文件)。
  4. RandomValuePropertySource 加载random.* 形式的属性。
  5. 操作系统环境变量。
  6. Java 系统属性 ( System.getProperties())。
  7. 通过java:comp/env配置的 JNDI 属性
  8. ServletContext 初始化参数。
  9. ServletConfig 初始化参数。
  10. SPRING_APPLICATION_JSON(嵌入环境变量或系统属性中的内联 JSON)的属性。
  11. 命令行参数。
  12. 测试环境中的属性properties@SpringBootTest测试注解
  13. 测试中的@DynamicPropertySource注释。
  14. 测试环境中的 @TestPropertySource注解配置。
  15. Devtools 全局配置.$HOME/.config/spring-boot (当 devtools 被激活 ~/.spring-boot-devtools.properties)

配置数据文件按以下顺序考虑:

  1. jar 包外的 application-{profile}.propertiesapplication-{profile}.yml 配置
  2. jar 包内的 application-{profile}.propertiesapplication-{profile}.yml 配置
  3. jar 包外的 application.propertiesapplication.yml 配置
  4. jar 包内的 application.propertiesapplication.yml 配置

命令行属性


  默认情况下, SpringApplication 会获取--参数(例如 --server.port=9000 ),并将这个 property 添加到 Spring 的 Environment中。如前所述,命令行属性始终优先于基于文件的源属性。
  如果不想加载命令行属性,可以通过 SpringApplication.setAddCommandLineProperties(false) 禁用。

json应用程序属性


  环境变量和系统属性通常有限制,这意味着某些属性名称无法使用。为了解决这个问题,Spring Boot 允许您将一个属性块编码到单个 JSON 结构中。
  当您的应用程序启动时,任何spring.application.jsonSPRING_APPLICATION_JSON属性都将被解析并添加到Environment.
例如,可以在 UN*X shell 的命令行上提供SPRING_APPLICATION_JSON属性作为环境变量:

$ SPRING_APPLICATION_JSON='{"my":{"name":"test"}}' java -jar myapp.jar

在前面的示例中,您最终会进入Spring Environmentmy.name=test
同样的, 也可以提供JSON属性:

$ java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar

或者json 命令行参数:

$ java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}'

如果要部署到经典的Application Server,您还可以使用名为java:comp/env/spring.application.json 的 JNDI 变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Spring Boot 初识丨七 丨外部化配置(一)】属性详解 的相关文章

随机推荐

  • OpenMV激光打靶

    题目要求识别形状并且键盘设置控制激光笔走A B C等轨道 OpenMV需要识别图形形状 激光笔位置 以及提高要求中的识别形状的面积等 这里介绍一下识别激光的方法 主要使用的是色块识别 但是激光点面积很小 而且在黑色区域容易被吞掉 因此对图像
  • 可自动读取水果成熟度的ai识别系统

    基于5G的水果成熟判断及采收系统 背景技术 随着物流和国际贸易经济的快速发展 国内外水果生产 储运和销售市场越来越大 目前 北果南运 南果北运以及外果内运已占物流运输的近半江山 目前 在水果采摘 储运和销售过程中常会出现一些问题 比如 为了
  • 推荐系统公平性论文阅读(五)

    这几天我的主要任务是对论文 Towards Long term Fairness in Recommendation 1 中所描述的算法进行编程实现 然后测试该算法的效果并记录 以下分模型算法细节实现 数据集 模型评估准则 测试结果记录四个
  • vue 自定义 el-cascader 展示文字及样式

    首先 自定义 popper class 因为设置的样式需要全局设置才生效 使用定义的类 可以避免影响到其他页面的效果
  • 第十七篇 PyTorch学习率调整策略

    文章目录 摘要 1 对不同层设置不同的学习率 应用举例 2 等间隔调整学习率 StepLR 应用举例 3 按需调整学习率 MultiStepLR 应用举例 4 指数衰减调整学习率 ExponentialLR 应用举例 5 余弦退火调整学习率
  • nvm安装node.js失败原因之一

    最近真的是频繁的换电脑 每次都要重新配置环境 然后同一个坑踩两次 哈哈哈 还是写一个记录一下吧 1 第一步是在给官网下载nvm安装包然后next一路安装 2 第二步使用nvm install 版本号 安装node js 然后就出现问题咯 然
  • M.2接口NVMe SSD固态硬盘安装win10

    M 2接口NVMe SSD固态硬盘使用了新接口 所以目前市面上的U盘win pe系统基本都不能识别硬盘 无法安装 但 win10原生系统默认能够识别NVMe固态盘的 所以 我们可以从微软官网https www microsoft com z
  • 大数据电商数据仓库系统搭建 附离线安装包

    一 数仓理论 1 数据仓库概念 数据仓库 Data Warehouse 是为企业所有决策制定过程 提供所有系统数据支持的战略集合 通过对数据仓库中数据的分析 可以帮助企业 改进业务流程 控制成本 提高产品质量等 数据仓库 并不是数据的最终目
  • 51单片机——LCD1602液晶显示屏

    如下图 红框就是LCD1602液晶显示屏 他是可插拔的 插上去后数码管就会乱码无效了 因为他两共用了MCU的8个P0口 LCD1602原理图 从上面两幅图可以看出来 LCD1602的LCD D0 LCD D7分别对应MCU的P00 P07
  • PhotoScan空三加密操作流程

    1 空三的原始数据 空三的原始数据主要由四个部分 原始影像 POS信息 像控点点位坐标 像控点现场照片 图片 2 加密流程 在PhotoScan中的加密流程主要是下面几个步骤 2 1导入照片及pos信息 在工作流程中添加照片 点击输入参照
  • windows 2012 证书服务

    文章目录 加密 数字签名 SSL 独立证书服务器 防火墙和路由 web服务器 web服务器使用证书服务 ssl加密 证书转换 openssl将私钥和crt证书合成pfx证书 iis配置ssl 步骤 加密 对称加密是使用的同一把密匙进行加密和
  • network和NetworkManager区别及ifconfig、ip、ethtool命令的使用介绍

    当你进入一个linux操作系统之后 你首先想了解恐怕就是这个环境的网络状态了 如果你使用的linux桌面GUI系统 你可以直接查看桌面上的网络图标 如果你使用的是服务器text文本模式登录 那恭喜你 下面的使用方式可以帮到你 openEul
  • Shell--基础--03--字符串

    Shell 基础 03 字符串 1 介绍 字符串是shell编程中最常用最有用的数据类型 除了数字和字符串 也没啥其它类型好用了 字符串可以用单引号 也可以用双引号 也可以不用引号 1 1 单引号 k5 333 aaa bbbb 单引号字符
  • Java中的基本数据类型byte、short、int和long

    一 byte byte的表示位数为 128 127 当我们byte num01 128时 数字超过的byte的表示范围 会报错 因为128默认为int型 所以我们要遵从 当表示范围大的数据类型转换成表示范围小的数据类型时 要强制转换 byt
  • 初识kafka --安装启动

    初识kafka kafka的安装及启动 kafka 1 官网下载 2 解压 3 安装jdk 4 配置kafka 4 1 配置server properties 4 2 配置zookeeper properties 5 启动kafka Kaf
  • QT for webassembly 技术探索

    前几日 接到上级任务 在不改动C 客户端的基础上 实现在浏览器中打开C 客户端 并进行交互 本想着是天方夜谭 谷歌一番 竟果真有此等尝试 官方参考文档传送门 https wiki qt io Qt for WebAssembly 在下查资料
  • Linux下ffmpeg无法内录声音解决方法

    此内容是转载非原创 感谢作者的付出 谢谢 参考下面这篇文章 http tieba baidu com p 4090696136 和这个链接 https trac ffmpeg org wiki Capture ALSA no1 这个问题基本
  • baxter机器人连接

    1 ctrl alt F3查看机器人的序列号以及IP地址 2 修改baxter sh 注意 baxter sh文件要放在工作空间根目录下 用网线将机器人和自己的电脑连接起来 注意 your ip要改成和baxter机器人ip同频段的但不同通
  • Qt:读取已有数据的Excel文档,并将数据显示在通过QTableWidget绘制的表格中,之后将显示的数据保存成excel格式进行输出(包括表头等内容)

    读取已有数据的Excel文档 并将数据显示在通过QTableWidget绘制的表格中 之后将显示的数据保存成excel格式进行输出 包括表头等内容 UI展示及功能简介 读取 于Mainwindow中 on read clicked属于Pus
  • 【Spring Boot 初识丨七 丨外部化配置(一)】属性详解

    上一篇讲了 Spring Boot 的依赖注入 本篇来讲一讲Spring Boot 外部化配置 Spring Boot 初识 Spring Boot 初识丨一 入门实战 Spring Boot 初识丨二 maven Spring Boot