首页 > 其他分享 >【SpringBoot】对于yaml的详细学习和三种属性赋值的实战详解

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

时间:2022-12-03 12:03:46浏览次数:31  
标签:SpringBoot age private yaml 详解 小菜 properties name

一.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文件如下:

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

标签:SpringBoot,age,private,yaml,详解,小菜,properties,name
From: https://blog.51cto.com/u_15568258/5904273

相关文章

  • springbootMVC02(Bean加载控制)
    大纲:本节的问题就是解决"spring和springMVC要加载对应的Bean,要怎么操作"一、思考和处理思路二、对上面图片的总结:三、对解决方法的"代码块"3.1在config包下建"spr......
  • k8s篇-k8s集群架构及组件详解【史上最详细】
    Okubernetes简介k8s是什么k8s是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可以促进声明式配置和自动化。k8s能做什么1)服务发现和负载......
  • springboot快速集成dubbo(基于 zk)
    springboot快速集成dubbo文章目录​​springboot快速集成dubbo​​​​1.zookeeper服务安装​​​​2.dubboadmin服务安装​​​​3.项目运行​​​​4.zookeepe......
  • SpringBoot 适配 MyBatis 分页插件功能(自定义拦截器方式)
    文章目录​​1.自定义分页插件​​​​1.1.application.properties添加mybatis属性​​​​1.2.mybatis-config.xml配置文件​​​​1.3.分页拦截器类PagePlugin​......
  • python解析yaml文件
    1、初始化yaml文件的目录def__init__(self):self.yaml_root_path='D:\\Code\\PythonProject\\UIAutoProject\\config\\yaml\\'2、读取yaml文件的方法defread_......
  • 【坑】springboot使用Junit进行单元测试报错
    在使用myeclipse写了一个简单的springboot的demo进行进行Junit测试的时候,发现一直是这个错误,刚开始遇到这个问题,还以为是别人博客里面写的不够清晰,哪里没有注意到的问题,结果......
  • 【SpringBoot】个性化banner.txt了解一下?
    在上手springboot之后,可以看到在启动的时候,控制台会打印出关于springboot的信息,也就是显示出来SpringBoot默认的信息(横幅)。在springboot的官方文档中指出,可以自定义属于自......
  • 【SpringBoot】IDEA中yml文件问题
    问题1:application.yml文件图标显示异常。如果第一次使用idea搭建SpringBoot项目的话,会发现IDEA对yml文件的支持不是很友好,也可能是我使用的版本比较旧的原因。需要添加yml的......
  • SpringBoot启动报错:main ERROR Unable to create file ${sys:log.path.prefix}/log.l
    完整的错误信息:2019-08-2214:17:59,340mainERRORUnabletocreatefile${sys:log.path.prefix}/log.logjava.io.IOException:文件名、目录名或卷标语法不正确。at......
  • SpringBoot JPA 自动生成代码 (一) 生成实体类
    之前做SSM项目时,一直使用的是Mybatis的Generator自动生成代码工具,也是蛮好使的。现在换了SpringBoot,自动生成代码使用的是人人开源项目修改来的,可以直接生成简单的CRUD代码......