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

news/2024/4/27 4:01:47/文章来源:https://blog.csdn.net/weixin_52908342/article/details/128102464

一.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: 20birth: 2022/11/29happy: falsemaps: {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/29happy: falsemaps: {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.luyixian.cn/news_show_38675.aspx

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

相关文章

CDMP选修课都有什么?

大家都知道CDMP认证考试有四个级别。分别是A级&#xff08;基础级&#xff09;P级&#xff08;实践级&#xff09;M级&#xff08;专业级&#xff09;F级&#xff08;大师级&#xff09;。级别越高&#xff0c;考试难度就越大&#xff0c;分数比例要求也更高&#xff0c;相对应…

Unity ab包加载文本 puerts 自定义loader

输出ab包 他会把你创建的ab包都打包 也就是在这里的创建的 string assetBundleDirectory Path.Combine(Application.streamingAssetsPath, "OutAssetBundles"); if (!Directory.Exists(assetBundleDirectory)) {Directory.CreateDirectory(assetBundleDirectory);…

【HIT-OSLAB-实验中的碎碎念】

文章目录应该养成的好习惯删除 替换 修改 内容时 记得留备份遇到问题要通过文字 图片 等多种途径去记录不同的项目应该在不同的文件夹进行处理代码文档 记得添加一些注释用于说明功能多输出有区别度的提示信息s找bug 先定位错误 再改当一份代码有不同版本的时候 记得说明每份代…

黎曼的几何基础,维度

黎曼的几何基础&#xff0c;让数学领先物理100年&#xff0c;维度是人类最大的障碍 - 知乎 高斯很早就有了“高维几何”的想法&#xff0c;他曾经向他的同事们说起假想完全生活在二维表面上的“书虫”&#xff0c;并想要把这推广到高维空间的几何学中去。然而&#xff0c;由于害…

进程与信号(三)

目录 一、前言 二、Signals 1、Signal Handling&#xff08;ctrlc.c&#xff09; 2、Sending Signals &#xff08;1&#xff09;alarm.c &#xff08;2&#xff09;A Robust Signals Interface &#xff08;3&#xff09;ctrlc2.c 3、Signal Sets &#xff08;1&…

ConstraintLayout布局扩展

相信大家对ConstraintLayout&#xff08;约束布局&#xff09;不陌生,这是google推出的一个强大控件&#xff0c;之所以强大其实主要归纳有两点&#xff1a;减少布局层次&#xff0c;能够轻松实现复杂布局。当然在我们实际使用过程中&#xff0c;是否真的减少了布局层次&#x…

FPGA实现图像对比度自动调整,提供2套工程源码和技术支持

目录1.算法原理介绍2.HLS算法实现3.工程1介绍&#xff1a;zynq7100实现4.工程2介绍&#xff1a;Kintex7实现5.上板调试验证6.福利&#xff1a;工程源码获取1.算法原理介绍 使用直方图均衡技术实现 使用直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部…

ASCHIP_ISP Tool 工具 使用与更新

系列文章目录 ASCHIP-ISP Tool 版本1 2022 11 26ASCHIP-ISP Tool 版本1 使用说明 2022 11 26 软件介绍 对窗体进行初步配置&#xff0c;配置其大小与显示 一&#xff1a;软件介绍 ASCHIP_ISP Tool 工具是用于具有 ISP 功能型号类型的单片机进行 ISP 更新程序开发实验的配套上位…

[附源码]Python计算机毕业设计SSM隆庆祥企业服装销售管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【网络编程】第二章 网络套接字(socket+UDP协议程序)

&#x1f3c6;个人主页&#xff1a;企鹅不叫的博客 ​ &#x1f308;专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接&#xff1a;代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

Java-泛型实验

1.定义一个学生类Student&#xff0c;具有年龄age和姓名name两个属性&#xff0c;并通过实现Comparable接口提供比较规则&#xff08;返回两个学生的年龄差&#xff09;&#xff0c; 定义测试类Test&#xff0c;在测试类中定义测试方法Comparable getMax(Comparable c1, Compar…

Docker-JenKins安装及配置!

Jenkins官网&#xff1a;Jenkins 安装主机配置&#xff08;官方&#xff09;&#xff1a; 最低&#xff1a; 256 MB 内存 1 GB 的驱动器空间&#xff08;尽管如果将 Jenkins 作为 Docker 容器运行&#xff0c;则建议至少 10 GB&#xff09; 小团队推荐&#xff1a; 4 GB …

英文ppt怎么翻译成中文?教你几种ppt翻译方法

ppt文件受到很多人的喜欢是因为它展示起来直观清晰&#xff0c;无论是老师在课堂上使用ppt课件来教学&#xff0c;还是在工作汇报中用ppt文件展示设计的方案或取得的成果。但当我们需要把ppt文档里的文本内容里的外语翻译成中文的时候&#xff0c;我们应该怎么做呢&#xff1f;…

003. 电话号码的字母组合——回溯算法

1.题目链接&#xff1a; 17. 电话号码的字母组合 2.解题思路&#xff1a; 2.1.题目要求&#xff1a; 给定一个仅包含数字 2-9 的字符串 digits &#xff0c;返回所有它能表示的字母组合。 数字和字母的关系&#xff1a; 例子&#xff1a; 输入&#xff1a;"23" …

[Spring]第二篇:IOC控制反转

简单的说就是,创建对象的权利,或者是控制的位置,由JAVA代码转移到spring容器,由spring的容器控制对象的创建,就是控制反转. spring创建对象时,会读取配置文件,配置文件中主要配置接口和实现类的关系,每个接口对相应一个实现类,使用<bean>标签配置,<bean中的id可以随便…

学生选课系统

项目描述 通过项目背景的分析以及了解到现在学校面临的问题&#xff0c;特别需要一个选课管理系统保证学生信息以及各种课程成绩的准确性和实效性&#xff0c;通过利用计算机的高速计算和快速的统计分析&#xff0c;保证学生信息的最新记录。从教职工的角度老考虑&#xff0c;…

用VS软件开发“中国象棋“游戏<笔记摘录>

整体架构如上 1.很直观地去看这个中国象棋的界面,数一下它有多少行和多少列. 10行,9列:要注意这里数的是安放象棋的位置,有10行9列 这里我们首先想到的必然是二维数组,每一个行列交叉的点都设置成二维数组a[i][j]这样的格式,以此来确定棋盘上面每一个棋子的位置和走向. 我们…

详解 Spring Boot 项目中的配置文件

目录 1. Spring Boot 项目中配日文件的作用是什么 2. Spring Boot 配置文件的两种格式 3. properties 配置文件 3.1 properties 配置文件的基本语法 3.2 properties 配置文件的分类 3.3 如何读取配置文件 3.4 properties 配置文件的优缺点分析 4. yml 配置文件 4.1 yml …

BP神经网络PID从Simulink仿真到PLC控制实现(含博途PLC完整SCL源代码)

单神经元自适应PID控制博途PLC完整源代码,请参看下面的文章链接: 博途PLC单神经元自适应PID控制_RXXW_Dor的博客-CSDN博客_单神经元pid控制1、单神经元作为构成神经网络的基本单位,具有自学习和自适应能力,且结构简单易于计算,传统的PID具有结构简单、调整方便和参数整定…

【软件测试】8年资深测试说出来我们的心声......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 执着于手动的功能测…