【SpringBoot】对于yaml的详细学习和三种属性赋值的实战详解

news2024/11/23 15:35:08

一.yaml详细讲解

1.1 什么是yaml?

YAML是一种数据序列化语言,通常用于编写配置文件。业界对YAML有不同的看法。有些人会说YAML代表另一种标记语言。其他人认为“YAML不是标记语言”(“YAML并非标记语言”)。“YAML”只是这句话的递归缩写,强调YAML用于数据而不是文档。

1.2 新建yaml文件

到resource文件夹下,新建application.yaml。文件如下:

在这里插入图片描述

1.3 SpringBoot的配置文件

SpringBoot的全局配置,只有俩种:

1.要么是application.properties:

  • 语法结构:key=value

2、要么是application.yaml:

  • 语法结构:key:空格 value

意义、作用:修改SpringBoot自动配置的默认值。

1.4 xml和yaml

标记语言:

xml配置:

<server>
	<prot>8080</prot>
</server>

yaml配置:

server:
	port: 8080

很明显,yaml更加的轻巧一点。

1.5 yaml的使用

举一个简单的例子:来突出键值对的特点。

yaml文件如下:

neme: 上进小菜猪

原配置properties文件如下:

neme=上进小菜猪

1.5.1 yaml对象的使用

yaml定义一个对象为people,然后就可以在里面定义。

people:
  neme: 上进小菜猪
  age: 20

当然我们的原配置properties文件也可以实现,如下:

people.neme="上进小菜猪"
people.age=20

SpringBoot推荐使用yaml。

1.5.2 行内的写法

yaml支持数组,我们普通写法如下:

num:
  - cat
  - dot
  - pig

当然我们可以采用行内的写法:

pets: [cat,dog,pig]

上面的对象也可以写到行内的写法:

people: {name:"上进小菜猪",age:20}

注意:

properties只能存键值对,不能存其他的。

yaml对空格的要求非常的严格。

强大之处:可以注入到我们的配置当中。

二.属性赋值

2.1 原生赋值

@Component

@component是spring中的一个注解,它的作用就是实现bean的注入。

1.新建一个类对象:caipig

private String name;
private Integer age;

然后写有参无参,getter和setter方法以及tospring。

2.新建对象类:Person

private String name;
private Integer age;
private Date birth;
private Boolean happy;
private Map<String, Object> maps;
private caipig pig;

然后写有参无参,getter和setter方法以及tospring。

3.给caipig赋值:

@Value("小菜猪")
private String name;
@Value("2")
private Integer age;

4.去测试集里,测试是否成功:

在这里插入图片描述

5.引入类。

@Autowired
private com.zhu.springbootdemo.pojo.caipig caipig;

6.运行,观察输出。

@Test
void contextLoads() {
    System.out.println(caipig);
}

在这里插入图片描述

2.2 使用yaml

1.在一.yaml详解里,我们新建了一个固定名字的yaml。现在我们到里面进行赋值。

person:
  name: 上进小菜猪
  age: 20
  birth: 2022/11/29
  happy: false
  maps: {a:a1,b:b1}
  pig:
    name: 菜猪
    age: 3

2.在Person对象类加入ConfigurationProperties。

@ConfigurationProperties作用:将配置文件中配置的每一个属性值,映射到这个组件中。告诉springboot将本类中的所有属性和配置文件中的相关配置进行绑定

@ConfigurationProperties(prefix = "person")

3.去测试集里,测试是否成功:

在这里插入图片描述

这里引入ConfigurationProperties会爆红,但是他并不影响我们的代码的运行。这个爆红是可以改的。稍后我会在博客里写他的解决方案。

2.3 使用properties

1.将上面的@ConfigurationProperties注释掉

//@ConfigurationProperties(prefix = "person")

2.可以在application.properties或者你自己新建一个properties,比如,我的文件名为zhubo.properties

name=上进小菜猪

3.加载指定的配置文件

@PropertySource(value = "classpath:zhubo.properties")

@PropertySource 和 @Value组合使用

给其赋值:

@Value("${name}")
private String name;

4.运行,观察输出。

在这里插入图片描述

这里已经输出成功了,因为中文的编码有点问题,所以输出????

2.4 扩展,yaml使用EL表达式

我们可以随意灵活的在yaml里使用EL表达式,如下,我们可以弄一个uuid。随机数,占位符等等。

person:
  name: 上进小菜猪${random.uuid}
  age: ${random.int}
  birth: 2022/11/29
  happy: false
  maps: {a:a1,b:b1}
  pig:
    name: ${person.null:hello}_菜猪
    age: 3

重新跑一下:

Person{name='上进小菜猪7e555d13-1da0-46a1-91b2-c1ac1ec9c4c7', age=1628943677, birth=Tue Nov 29 00:00:00 CST 2022, happy=false, maps={aa1=, bb1=}, pig=caipig{name='hello_菜猪', age=3}}

在这里插入图片描述

这样就比较灵活。

三.小结

总结:

1.@ConfigurationProperties作用:

将配置文件中配置的每一个属性值,映射到这个组件中。告诉springboot将本类中的所有属性和配置文件中的相关配置进行绑定

2.@Component作用:

@component是spring中的一个注解,它的作用就是实现bean的注入,@component取代。

3.@PropertySource作用:

@PropertySource 和 @Value组合使用,可以将自定义属性文件中的属性变量值注入到当前类的使用@Value注解的成员变量中。

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

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

相关文章

CentOS中使用Docker部署带postgis的postgresql

场景 CentOS中使用Docker来部署Postgresql&#xff1a; CentOS中使用Docker来部署Postgresql_霸道流氓气质的博客-CSDN博客 上面安装的postgresql还需自行安装postgis插件&#xff0c;是否可以直接安装带postgis插件的postgresql。 注&#xff1a; 博客&#xff1a;https:…

RKMEDIA使用简介

瑞芯微&#xff08;rockchip&#xff09;芯片现在嵌入式行业使用的逐渐多了&#xff0c;本栏主要介绍rv1126/rv1109上的媒体框架 rkmedia的使用以及常遇到的问题。 希望可以给各位使用rkmedia的小伙伴一些帮助&#xff0c;同时也是自己工作的记录。 rkmedia的手册在sdk目录下/…

windows10系统安装nvm切换电脑node版本

介绍 nvm 是 node version manager&#xff08;node 版本管理工具&#xff09;的缩写&#xff0c;是一个命令行工具&#xff0c;用于管理和切换到不同版本的 node.js。 不同的项目可能需要不同版本的 node.js 和 npm&#xff08;node 包管理器&#xff09;&#xff0c;例如&a…

(二)devops持续集成开发——jenkins的权限管理配置

前言 jenkins作为目前主流的devops工具&#xff0c;受到了广大开发用户的追捧。由于其丰富的插件库&#xff0c;其可插拔的功能使得其功能和生态都十分强大。本节内容是关于jenkins的权限管理组件Role-based Authorization Strategy的安装及使用。 正文 下载安装Role-based A…

极验--一键通过模式逆向分析

内容仅供参考学习 目标 网址&#xff1a;https://www.geetest.com/demo/fullpage.html 这次只是简单的进行一次分析&#xff0c;如果有需要可以直接看最后 流程分析 打开调试工具&#xff0c;刷新一下页面&#xff0c;获取初始的交互信息&#xff1a; 先看第一个&#x…

3.RabbitMQ工作模式介绍

3.RabbitMQ工作模式介绍.md 文章目录3.RabbitMQ工作模式介绍.md1.简单模式1.1总结2.Work Queues 工作队列模式2.1 模式说明2.2 代码编写2.3 总结3.Pub/Sub 订阅模式3.1 模式说明3.2 使用场景3.3 代码实现3.4 总结&#xff1a;4.Routing 路由模式4.1 模式说明4.2 代码编写4.3 总…

CAS:304014-13-9,淬灭剂QSY21 NHS ,QSY 21NHS 试剂供应

一&#xff1a;产品描述 1、名称 QSY 21NHS 淬灭剂QSY21 NHS 淬灭剂QSY21 NHS ester 2、CAS编号&#xff1a;304014-13-9 3、分子式&#xff1a;C45H39ClN4O7S 4、分子量&#xff1a;815.34 5、外观&#xff1a; 紫色固体 &#xff08;具体由其分子量大小决定外观&am…

ORB-SLAM2 ---- KeyFrameDatabase::DetectRelocalizationCandidates函数

目录 1.函数作用 2.步骤 3.code 4.函数解析 4.1 找出和当前帧具有公共单词(word)的所有关键帧 4.2 统计上述关键帧中与当前帧F具有共同单词最多的单词数maxCommonWords&#xff0c;用来设定阈值1 4.3 遍历上述关键帧&#xff0c;挑选出共有单词数大于阈值1的及其和当…

JUC并发编程第五篇,如何优雅的使用线程中断机制和线程等待唤醒机制?

JUC并发编程第五篇&#xff0c;如何优雅的使用线程中断机制和线程等待唤醒机制&#xff1f;一、线程中断机制1. 什么是线程中断&#xff1f;2. 你知道 interrupt() 方法的含义吗&#xff1f;3. 如何使用中断标识优雅的停止线程&#xff1f;第一种&#xff1a;通过volatile变量实…

元年智答|数据洞察功能介绍

什么是数据洞察 随着企业积累数据量增多&#xff0c;数据分析师常常需要处理“长且宽”的数据集。依靠人的经验处理海量数据&#xff0c;从海量数据中发掘出有用的信息无异于大海捞针。虽然人工智能技术的普及和单位算力价格的下降大大降低了数据挖掘的门槛&#xff0c;但是面…

消息队列概述与扩展

一、消息队列的特性 与业务解藕&#xff1a;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。FIFO&#xff1a;先投递先到达的保证是一个消息队列和一…

【HTML】猜拳小游戏

博主&#xff1a;&#x1f44d;不许代码码上红 欢迎&#xff1a;&#x1f40b;点赞、收藏、关注、评论。 格言&#xff1a; 大鹏一日同风起&#xff0c;扶摇直上九万里。 文章目录一、HTML完整源码二、效果三、完整资源文件一、HTML完整源码 <!DOCTYPE html PUBLIC "…

文本分类方案,飞浆PaddleNLP涵盖了所有

文章目录1.前言2.核心技术2.1 文本分类方案全覆盖2.1.1 分类场景齐全2.1.2 多方案满足定制需求方案一&#xff1a;预训练模型微调方案二&#xff1a;提示学习方案三&#xff1a;语义索引2.2 更懂中文的训练基座2.3 高效模型调优方案2.4 产业级全流程方案3. 快速开始4. 常用中文…

Photoshop、Illustrator、Sketch哪个更好

以前在交流组经常能看到大家争论哪个设计软件好&#xff1f;到底是你的吗&#xff1f;Illustrator好还是我的CorelDRAW或者他的Photoshop强大&#xff1f;但是跟着UI流行的设计&#xff0c;Sketch软件也加入了争论&#xff01;让我们和你分享一下这篇文章。让我们来看看平面设计…

云原生周刊 | AWS 开源 macOS 容器开发工具 Finch | 2022-11-28

今年的北美 KubeCon 大会结束后&#xff0c;来自 uptime.build 的 Jan Mundin 给会场的所有展台都拍了照&#xff0c;详细分析展台上的每一个单词&#xff0c;并汇总成了词云&#xff0c;其中热门词汇只有“安全”和“平台”&#xff0c;并不包含“自动化”和 DevOps。整个会场…

第四章 数字逻辑电路设计方法【Verilog】

第四章 数字逻辑电路设计方法【Verilog】前言推荐第四章 数字逻辑电路设计方法概览4.2 组合逻辑设计裁判表决电路方法1&#xff1a;真值表方式方法2&#xff1a;逻辑代数方式方法3&#xff1a;结构描述方式方法4&#xff1a;抽象描述方式测试结果4.2.1数字加法器2输入1 bit信号…

ATJ2157ATJ2127音乐按文件名拼音排序---标案是按内码进行排序

音乐按文件名拼音进行排序参考网站ATJ2157&ATJ2127 排序是按照内码(汉字为GBK即GBK936)排序的按拼音排序unicode与拼音的对比表(U2P.DAT)&#xff0c;需要打包到固件中U2P.DAT数据结构U2P.DAT生成代码是使用DEV-C生成其他说明U2P.DAT与ATJ2127平台代码参考网站 各种字符对…

springboot奥运会志愿者管理系统

当我知道奥运会志愿申请成功&#xff0c;也刚好是我的毕业&#xff0c;觉得自已需要做点什么&#xff0c;奥运会申请成功觉得自已去做一个志愿者&#xff0c;这样不断丰富了自已的经历&#xff0c;还能给自已在现实生活中上了一课&#xff0c;为了迎合志愿者需求&#xff0c;决…

SSM毕设项目 - 基于SSM的毕业设计管理系统(含源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.2.1 系统开发流程3.3.2 教师登录流程3.3.3 系统操作流程3.3 系统结构设计4 项目获取1 项目简介 Hi&#xff0c;各位同学好呀&#xff0c;这里是M学姐&#xff01; 今天向大家分享一个今年(2022)最新…

经典Mysql入门必刷50题及全网最新最详细的笔记记录

文章目录Mysql50题练习题1练习题2练习题3练习题4练习题5练习题6练习题7练习题10练习题11练习题12练习题13练习题14练习题15练习题16练习题17练习题18练习题1919.按各科平均成绩进行排序&#xff0c;并显示排名练习题20练习题21练习题22练习题24练习题25练习题26.练习题27练习题…