【SpringBoot】对于yaml的详细学习和三种属性赋值的实战详解
创始人
2024-02-29 09:33:38
0

一.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配置:

8080

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 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注解的成员变量中。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...