16、外部配置源与外部配置文件及JSON配置

外部配置源与外部配置文件及JSON配置

application.properties application.yml 这些是配置文件,
命令行配置、环境变量配置、系统属性配置源,这些属于配置源。

在这里插入图片描述

外部配置源的作用:

Spring Boot相当于对Spring框架进行了封装,Spring Boot会自动配置大量的基础设置Bean(比如DataSource、SessionFactory等),此时就需要提供一些必要的配置信息(如URL、用户名、密码啊),这样Spring才能帮我们去自动配置。

▲ 配置源和配置文件

 配置源包含了配置文件,此外,配置源还包括如下:- 环境变量
- 系统属性
- 命令行的选项参数
- JSON配置等

★ 外部配置源的加载顺序

▲ 加载顺序

(1)默认属性(通过SpringApplication.setDefaultProperties()方法指定)。
(2)配置类(@Configuration修饰的类)上的、用@PropertySource注解加载的属性文件中的属性值。
(3)配置文件(如application.properties文件等)。
(4)RandomValuePropertySource,只包含random.*中的属性。
(5)操作系统环境变量。
(6)Java系统属性(System的getProperties()方法返回的属性)。
(7)来自于 java:comp/env 的JNDI属性。
(8)ServletContext的初始化参数(在web.xml文件中通过<context-param…/>元素设置的初始化参数)。
(9)ServletConfig的初始化参数(在web.xml文件通过<init-param…/>元素设置的初始化参数或通过@Servlet注解设置的初始化参数)。
(10)来自SPRING_APPLICATION_JSON的属性(嵌套在环境变量或系统属性中JSON文本)
(11)命令行参数。
(12)测试用例类上通过@SpringBootTest注解的properties所指定的属性。
(13)测试用例类上通过@TestPropertySource注解加载的属性文件中的属性值。
(14)如果Spring Boot的devtools工具处于激活状态,用户Home目录中.config/spring-boot/子目录下spring-boot-devtools.properties或spring-boot-devtools.yml文件设置的属性。

▲优先级

因为后加载的配置属性,会覆盖先加载的配置属性,因此后加载的配置属性的优先级更高

测试配置 > 命令行参数 > JSON配置 > 系统属性 > 环境变量 > 随机配置 > 配置文件 > 配置类 > 默认属性

★ 配置文件的加载顺序

配置文件是Spring Boot外部配置源中最主流、最主要的配置源。

▲ 基本原则:

JAR包外临时指定的配置文件的优先级高于JAR包内配置文件的优先级;

特定Profile对应的配置文件的优先级高于通用配置文件的优先级

▲ 加载顺序

(1)JAR包内的application.properties(或application.yml)。
(2)JAR包内的application-{profile}.properties(或application-{profile}.yml),这是特定Profile对应的配置文件。
(3)JAR包外临时指定的application.properties(或application.yml)。
(4)JAR包外临时指定的application-{profile}.properties(或application-{profile}.yml)。

因为后加载的配置属性,会覆盖先加载的配置属性,因此后加载的配置属性的优先级更高

★ JSON配置

所谓JSON配置,你可以通过任意配置源(如命令行参数、系统属性、环境变量等)方式配置一个名为spring.application.json(环境变量用SPRING_APPLICATION_JSON变量名)的属性, 该属性的值是一个JSON文档,Spring Boot会自动解析该JSON文档,将其解析成对应的属性。

【注意:】JSON文档需要放在引号中,因此JSON文档的内容中双引号往往就需要转义。

▲ Spring Boot应用会自动解析JSON配置值,将该配置的属性值按JSON格式解析成多个属性值,传给Spring Boot应用

代码演示:
演示项目如何在启动类写Json格式,然后解析JSON格式的数据并赋值给springboot应用

在这里插入图片描述

        //=============演示项目如何解析启动类这里配置的json数据===========================System.setProperty("spring.application.json","{ \"user\" : {  \"name\":\"ljh\" , \"age\":25  ,  \"addrs\":[\"广州\",\"深圳\"]   }}"  );ConfigurableApplicationContext ctx =SpringApplication.run(BootApplication.class, args);

演示通过命令行配置Json格式的选项参数,再解析

这个是没有把启动类的json数据注释掉,如上面的数据,然后启动,发现在命令行设置json的数据可以被读取到。
但是如果我把启动类上的System.setProperty(“spring.application.json”,
“{ “user” : { “name”:“ljh” , “age”:25 , “addrs”:[“广州”,“深圳”] }}” ); 这个注释掉,再启动老是报age的错。
如图:不理解。JSON格式应该是没问题的。
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

策略模式(C++)

定义 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可互相替换((变化)。该模式使得算法可独立手使用它的客户程序稳定)而变化(扩展&#xff0c;子类化)。 ——《设计模式》GoF 使用场景 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多…

viewerjs 如何新增下载图片功能(npm包补丁)

文章目录 先实现正常的效果实现下载图片改变viewerjs的build函数源码改变之后&#xff0c;执行npm i 之后node_modules源码又变回了原样 1、viwerjs所有功能都很完善&#xff0c;但唯独缺少了图片的下载 2、需求&#xff1a;在用viwerjs旋转图片后&#xff0c;可以直接下载旋转…

规划模型Matlab代码

文章目录 数学规划定义一般形式分类 1.线性规划(linear programming)2.非线性规划(nonlinear programming)3. 整数规划(integer programming)4. 0-1规划(0-1 programming)5. 最大最小化模型6. 多目标规划模型7.敏感性分析&#xff08;对权重&#xff09;[例题] 数学规划定义 数…

Stable Diffusion - SDXL 1.0 全部样式设计与艺术家风格的配置与提示词

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132072482 来源于 Anna Dittmann 安娜迪特曼&#xff0c;艺术家风格的图像&#xff0c;融合幻想、数字艺术、纹理等样式。 SDXL 是 Stable Diffus…

Git常见问题

git clone 提示OpenSSL SSL_read git clone 时提示Connection was reset, errno 10054类错误 fatal: unable to acce ss https://github.com/fex-team/ueditor.git/: OpenSSL SSL_read: Connection was reset, errno 10054 备注&#xff1a;以下方法只是归纳整理&#xff0c;…

【零基础学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流

文章目录 简介&#xff1a;一&#xff0c;变量1&#xff0c;变量的定义2&#xff0c;变量的可变性3&#xff0c;变量的隐藏 二、数据类型1&#xff0c;标量类型2&#xff0c;复合类型 三&#xff0c;运算符1&#xff0c;算术运算符2&#xff0c;比较运算符3&#xff0c;逻辑运算…

Apache Flink概述

Flink 是构建在数据流之上的一款有状态的流计算框架&#xff0c;通常被人们称为第三代大数据分析方案 第一代大数据处理方案&#xff1a;基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 &#xff0c;两套独立的计算引擎&#xff0c;难度大&#xff08;2014年9月&#x…

Hyperledger Fabric 使用 CouchDB 和复杂智能合约开发

前言 在上个实验中&#xff0c;我们已经实现了简单智能合约实现及客户端开发&#xff0c;但该实验中智能合约只有基础的增删改查功能&#xff0c;且其中的数据管理功能与传统 MySQL 比相差甚远。本文将在前面实验的基础上&#xff0c;将 Hyperledger Fabric 的默认数据库支持 …

Kafka3.0.0版本——Broker(Zookeeper服务端存储的Kafka相关信息)

目录 一、启动zookeeper集群及kafka集群服务启动1.1、先启动三台zookeeper集群服务&#xff0c;再启动三台kafka集群服务1.2、使用PrettyZoo连接zookeeper客户端工具 二、在zookeeper服务端存储的Kafka相关信息 一、启动zookeeper集群及kafka集群服务启动 1.1、先启动三台zook…

C++初阶引用

目录 引用引用的特性使用输出型参数作返回值小总结引用的权限引用和指针 引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 比如周树人&#xff0c;在外…

探索创意之路:稳定扩散AI绘画指南

文章目录 引言第一部分&#xff1a;了解稳定扩散AI绘画1.1 稳定扩散AI绘画简介1.2 稳定扩散AI绘画的优势 第二部分&#xff1a;使用稳定扩散AI绘画2.1 获取稳定扩散AI绘画工具2.2 准备绘画素材和设置参数2.3 进行AI绘画 第三部分&#xff1a;发挥创意&#xff0c;创作精彩绘画3…

阿里云AK创建

要在阿里云上创建 Access Key&#xff08;AK&#xff09;&#xff0c;您需要按照以下步骤进行操作&#xff1a; 登录到阿里云控制台&#xff08;[https://www.aliyun.com/?utm_contentse_1014243503)&#xff09;。 点击右上方的主账号&#xff0c;点击“AccessKey管理”。 …

P1064 [NOIP2006 提高组] 金明的预算方案 (依赖背包问题)(内附封面)

[NOIP2006 提高组] 金明的预算方案 题目描述 金明今天很开心&#xff0c;家里购置的新房就要领钥匙了&#xff0c;新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是&#xff0c;妈妈昨天对他说&#xff1a;“你的房间需要购买哪些物品&#xff0c;怎么布置&#xff0…

R语言【Tidyverse、Tidymodel】的机器学习方法

机器学习已经成为继理论、实验和数值计算之后的科研“第四范式”&#xff0c;是发现新规律&#xff0c;总结和分析实验结果的利器。机器学习涉及的理论和方法繁多&#xff0c;编程相当复杂&#xff0c;一直是阻碍机器学习大范围应用的主要困难之一&#xff0c;由此诞生了Python…

python人工智能可以干什么,python人工智能能干什么

大家好&#xff0c;给大家分享一下python做人工智能需要什么水平&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 人工智能包含常用机器学习和深度学习两个很重要的模块&#xff0c;而python拥有matplotlib、Numpy、sklearn、keras等大量的…

【深度学习笔记】深度学习框架

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

snap xxx has “install-snap“ change in progress

error description * 系重复安装&#xff0c;进程冲突 solution 展示snap的改变 然后sudo snap abort 22即可终止该进程 之后重新运行install command&#xff5e;&#xff5e; PS: ubuntu有时候加载不出来&#xff0c;执行resolvectl flush-caches&#xff0c;清除dns缓存…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 1 日论文合集)

文章目录 一、分割|语义相关(16篇)1.1 DPMix: Mixture of Depth and Point Cloud Video Experts for 4D Action Segmentation1.2 Investigating and Improving Latent Density Segmentation Models for Aleatoric Uncertainty Quantification in Medical Imaging1.3 Domain Ada…

网络音频终端音频编码解码终端

网络对讲终端SV-7011V 网络对讲终端SV-7011V&#xff0c;采用了ARM音频DSP架构&#xff0c;集网络对讲、网络广播、监听等功能于一身&#xff0c;内置麦克风、配置line out、line in、Mic in功能输出接口&#xff0c;适用于学校&#xff0c;机场&#xff0c;广场等场所。 产品…

纯css实现九宫格图片

本篇文章所分享的内容主要涉及到结构伪类选择器&#xff0c;不熟悉的小伙伴可以了解一下&#xff0c;在常用的css选择器中我也有分享相关内容。 话不多说&#xff0c;接下来我们直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"><head>&l…