Spring-Boot基础--yaml

目录

Spring-Boot配置文件

注意:

YAML简介

YAML基础语法

YAML:数据格式

YAML文件读取配置内容

逐个注入

批量注入

@ConfigurationProperties 和@value的区别

Spring-Boot配置文件

Spring-Boot中不用编写.xml文件,但是spring-Boot中还是存在.properties文件,同时还有.yml(.yaml)文件

application.properties 文件书写规则

person.name=万某

application.yml(yaml) 文件书写规则

person:name: 万某
#不同层级之间要有缩进
#冒号后要有空格

注意:

默认配置文件名称:application

Spring-Boot中可以同时存在 三类文件,优先级为:properties > yml > yaml

YAML简介

YAML文件相对传统的.xml文件更能直观的展示数据序列化格式,更加简洁。所以在Spring-Boot中一般使用.yml(.yaml)

YAML基础语法

  1. 大小写敏感
  2. 数据值前边必须有空格,作为分隔符
  3. 使用缩进表示层级关系
  4. 缩进时使用Tab键
  5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML:数据格式

字面量:普通值 [ 数字,布尔值,字符串]

boolean: TRUE               #TRUE,true,True,FALSE,false,False均可
float: 3.14                 #6.8523015e+5 #支持科学计数法
int: 123                    #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
string: HelloWorld			#字符串可以直接书写

数组:一组按次序排列的值( List、set )

address:- beijing- shanghai# 一行内写法
commpany: [阿里巴巴,华为,腾讯,字节跳动]

对象、Map(键值对)

person:name: 万某# 行内写法
person: {name: wangzhuo}#对象数组格式一
users:- name: Tomage: 4- name: Jerryage: 5
#对象数组缩略格式
users2: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]

YAML:参数引用

name: 万某person:name: xuelaoshi pet: ${name}       # 引用上边定义的name值name: xuls${random.uuid}        # 配置文件占位符,随机uuidname: ${person.name}_帅

YAML文件读取配置内容

推荐两种方式

逐个注入

在Controller类下给属性分别以@Value注解的方式分别赋值,@Value里的${yaml变量名}。

获取对象就对象.变量名。

获取数组就是使用索引的方式数组[0],在这里表示数组中的第一个值(上海)。

具体代码如下:录后复制

package com.imust.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Value("${name}")private String name;
//    获取对象@Value("${person.name}")private String person_name;@Value("${person.age}")private int person_age;//    获取数组@Value("${address[0]}")private String address1;@Value("${address[1]}")private String address2;@RequestMapping("/hello")public String hello(){System.out.println(name);System.out.println(person_name);System.out.println(person_age);System.out.println(address1);System.out.println(address2);System.out.println("========================");return "Hello,Spring Boot!";}
}

批量注入

yml文件中写入要批量导入的数据

在person类中添加ConfigurationProperties注解,和person2主名称一致

即可

@ConfigurationProperties 和@value的区别

  1. 用途和来源:‌

@Value主要用于从简单的属性文件中注入值,‌如application.propertiesapplication.yml,‌而@ConfigurationProperties则用于从带有嵌套属性的复杂配置文件中注入值。‌

  1. 类型安全性:‌

@Value不支持类型安全,‌需要进行手动类型转换,‌而@ConfigurationProperties支持类型安全,‌通过自动绑定和类型转换实现。‌

  1. 复杂性:‌

@Value适用于简单的属性注入场景,‌而@ConfigurationProperties适用于复杂的配置文件场景,‌能够处理嵌套属性、‌列表、‌集合等。‌

  1. 自定义属性:‌

@Value不支持自定义属性,‌而@ConfigurationProperties支持自定义属性,‌可以通过prefix、‌ignoreInvalidFields等参数进行配置。‌

  1. 松散绑定和SpEL支持:‌

@ConfigurationProperties支持松散绑定,‌允许在配置文件中使用不同的命名约定(‌如使用下划线、‌驼峰命名法等)‌,‌而@Value不支持松散绑定。‌此外,‌@ConfigurationProperties不支持SpEL表达式,‌而@Value支持。‌

  1. JSR303数据校验和复杂类型封装:‌

@ConfigurationProperties支持JSR303数据校验,‌而@Value不支持。‌同时,‌@ConfigurationProperties支持复杂类型的封装(‌如map)‌,‌而@Value不支持。‌

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

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

相关文章

qml 实现一个listview

主要通过qml实现listvie功能&#xff0c;主要包括右键菜单&#xff0c;滚动条&#xff0c;拖动改变内容等&#xff0c;c 与 qml之间的变量和函数的调用。 main.cpp #include <QQuickItem> #include <QQmlContext> #include "testlistmodel.h" int main…

Haproy服务

目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…

什么是正则表达式,如何在 Python 中使用?

什么是正则表达式 正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种用于匹配字符串中字符模式的工具。它是由普通字符&#xff08;例如字母、数字&#xff09;以及一些特殊字符&#xff08;称为元字符&#xff09;组成的字符序列。这种模式用…

FastAPI 学习之路(六十)打造系统的日志输出

我们要搭建日志系统&#xff0c;可以使用loguru&#xff0c;很不错的一个开源日志系统 pip install loguru 我们在common创建log.py&#xff0c;使用方式也很简单 import os import timefrom loguru import logger# 日志的路径 log_path os.path.join(os.getcwd(), "log…

【electron】 快速启动electron 应用

学无止境&#xff1a; 最近在搞electron项目&#xff0c;最重要的是总结 &#xff0c;写下来总不会忘记&#xff0c;也希望给大家参考一下&#xff0c;有不对的地方希望大家多指点。 快速启动electron 应用 1 克隆示例项目的仓库 git clone https://github.com/electron/ele…

PCB(印制电路板)制造涉及的常规设备

印制电路板&#xff08;PCB&#xff09;的制造涉及多种设备和工艺。从设计、制作原型到批量生产&#xff0c;每个阶段都需要不同的专业设备。以下是一些在PCB制造过程中常见的设备&#xff1a; 1. 计算机辅助设计&#xff08;CAD&#xff09;软件&#xff1a; - 用于设计PC…

又缩水Unity7月闪促限时4折活动模块化角色模板编辑器场景美术插件拖尾怪物3D模型UI载具AI对话TPS飞机RPG和FPS202407

Flash Deals are Coming Back! 限时抢购又回来了&#xff01; July 17, 2024 8:00:00 PT to July 24, 2024 7:59:00 PT 太平洋时间 2024 年 7 月 17 日 8&#xff1a;00&#xff1a;00 至 2024 年 7 月 24 日 7&#xff1a;59&#xff1a;00&#xff08;太平洋时间&#xff09;…

模块化沙箱:解锁数据防泄密的终极密码

在这个数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一。然而&#xff0c;数据泄露的威胁如同暗夜中的幽灵&#xff0c;随时可能侵袭企业的信息安全防线。面对日益复杂的内外部风险&#xff0c;企业亟需一种既高效又灵活的安全解决方案&#xff0c;来保护其核心数据不…

Linux编辑器——vim的使用

目录 vim的基本概念 命令模式 底行模式 插入模式 注释和取消注释 普通用户进行sudo提权 vim配置问题 vim的基本概念 一般使用的vim有三种模式&#xff1a; 命令模式 底行模式和插入模式&#xff0c;可以进行转换&#xff1b; vim filename 打开vim&#xff0c;进入的…

【.NET全栈】ASP.NET开发Web应用——AJAX开发技术

文章目录 前言一、ASP.NET AJAX基础1、AJAX技术简介2、ASP.NET AJAX技术架构 二、ASP.NET AJAX服务器端扩展1、声明ScriptManager控件2、使用ScriptManager分发自定义脚本3、在ScriptManager中注册Web服务4、处理ScriptManager中的异常5、编程控制ScriptManager控件6、使用Upda…

【论文解读】VoxelNeXt: Fully Sparse VoxelNet for 3D Object Detection and Tracking

VoxelNeXt 摘要引言方法Sparse CNN Backbone AdaptationSparse Prediction Head 3D Tracking实验结论 摘要 3D物体检测器通常依赖于手工制作的方法&#xff0c;例如锚点或中心&#xff0c;并将经过充分学习的2D框架转换为3D。因此&#xff0c;稀疏体素特征需要通过密集预测头进…

分布式搜索引擎ES-Elasticsearch进阶

1.head与postman基于索引的操作 引入概念&#xff1a; 集群健康&#xff1a; green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行&#xff0c;但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…

Java流的概念及API

流的概念 流&#xff08;Stream)的概念代表的是程序中数据的流通&#xff0c;数据流是一串连续不断的数据的集合。在Java程序中&#xff0c;对于数据的输入/输出操作是以流(Stream)的方式进行的。可以把流分为输入流和输出流两种。程序从输入流读取数据&#xff0c;向输出流写入…

曲轴自动平衡机:提升制造精度与效率的利器

在现代制造业中&#xff0c;曲轴作为发动机的核心部件之一&#xff0c;其质量和性能直接影响着整个发动机的运行效果。而曲轴自动平衡机的出现&#xff0c;为曲轴的生产制造带来了显著的优势。 一、高精度平衡校正 曲轴自动平衡机采用先进的传感技术和精密的测量系统&#xff0…

【TortoiseGitPlink提示输入密码解决方法】

问题&#xff1a;TortoiseGitPlink提示输入密码 解决方案 参考链接&#xff1a;TortoiseGitPlink提示输入密码解决方法 但后半部分和上文不同&#xff0c;点击图中 Load Putty Key 即可。

基于FPGA的多路选择器

目录 一、组合逻辑 二、多路选择器简介&#xff1a; 三、实战演练 摘要&#xff1a;本实验设计并实现了一个简单的多路选择器&#xff0c;文章后附工程代码 一、组合逻辑 组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲&#xff0c;组合逻辑电路的特点是输…

MathType加载项被word禁用怎么办 MathType加载到Word不能用

Word中的MathType加载项是指将MathType软件与Word文档进行关联的一项功能。它允许用户在Word中直接使用MathType的功能&#xff0c;方便地输入和编辑数学公式等内容。通过加载项&#xff0c;MathType的强大数学公式编辑能力可以与Word的文档处理功能相结合&#xff0c;提高工作…

ELK 8.14版本搭建

1.架构图 2.基础环境准备&#xff1a; 2.1 关闭防火墙和selinux [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config [rootlocalhost ~]# cat /etc/selinux/config # This file controls the state of SEL…

【Django】网上蛋糕商城后台-类目管理

1.类目管理列表实现 当管理员进入后台管理后&#xff0c;点击类目管理&#xff0c;向服务器发出请求 path(admin/type_list/,viewsAdmin.type_list), # 处理商品分类管理列表请求 def type_list(request):# 读取分页页码try:ym request.GET["ym"]except:ym 1# 查…

专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!

软件介绍 Adobe Acrobat Pro DC 2024绿色便携版是一款功能强大的PDF编辑和转换软件&#xff0c;由Adobe公司推出。它是Acrobat XI系列的后续产品&#xff0c;提供了全新的用户界面和增强功能。用户可以借助这款软件将纸质文件转换为可编辑的电子文件&#xff0c;便于传输、签署…