Spring Boot的yml配置文件讲解

一、Spring Boot配置文件介绍
Spring Boot中的配置文件主要是分为以下两种类型:
【1】application.properties全局配置文件
【2】application.yml全局配置文件
Spring Boot的配置文件一般放在 src / main / resources 路径下面,而且全局配置文件可以对一些默认属性进行修改。在学习Spring Boot之前我们一直使用的全局配置文件是以properties结尾的配置文件,所以在这里我们主要讲解application.yml配置文件。

二、yml文件介绍
yml文件是YAML语言的文件,YAML(Yet Another Markup Language)是一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言,并且它是以数据为中心,比JSON,XML等更适合做配置文件。

三、yml文件的应用场景
【1】脚本语言:由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用
【2】序列化: YAML是由宿主语言数据类型直转,的比较适合做序列化。
【3】配置文件:写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。由于兼容性问题,不同语言间的数据流转建议不要用 YAML。

四、yml文件的语法

【1】yml的基本格式
key: value:表示一对键值对,并且 : 与value必须有一个空格。
yml是以空格的缩进来控制层级的关系,只要是左对齐的一列数据,都算是同一个层级的,并且大小写也是敏感的,如下所示:

server:
    port: 8080
    path: /helloworld

【2】yml的值的写法

①、普通的值(数值,字符串,布尔值)
key: value 直接写即可,例如:

name: ZhangSan

如果是字符串要加上引号的话,分以下两种情况:
1.双引号:不会对字符串里面的特殊符号进行转义,例如 “my name is \n ZhangSan” 输出结果为"my name is " 换行之后再输出 “ZhangSan”。
2.单引号:对字符串里面的转义字符进行转义,使之变为普通字符,例如 'my name is \n ZhangSan’输出结果为 ‘my name is ZhangSan’。

②、对象,Map(属性和值)
第一种格式,如下所示:

person:
    name: ZhangSan
    age: 20
    sex: 男

第二种格式,如下所示:

person: {name: ZhangSan,age: 20,sex: 男}

③、数组(List,Set等)
第一种格式,如下所示:

pets
   - dog
   - pig
   - duck

第二种格式,如下所示:

pets: [dpg,pig,duck]

注意:冒号后面一定要有空格,即key: value。

四、案例演示
【1】创建两个Bean,一个是Cat,另外一个是Person,如下所示:
①、Cat.java

package bean;

/**
 * @author czd
 */
public class Cat {
    private String name;
    private Integer age;

    //下面省略Setter和Getter方法以及toString方法
}

在pom.xml文件中导入以下依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

②、Person.java

package com.czd.springbootdemo.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author czd
 * 将配置文件的属性映射到这个类的组件中
 * @ConfigurationProperties代表告诉SrpingBoot将本类中的属性与配置文件中的属性进行绑定
 */
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource("classpath:application.yml")
public class Person {
    private String name;
    private Integer age;
    private Boolean man;
    private Date birth;
    private Map<String,Object> map;
    private List<Object> list;
    private Cat cat;

    //下面省略Setter和Getter方法以及toString方法
}

【2】在resources包下创建一个application.yml配置文件,输入如下内容:

person:
  name: 张三
  age: 20
  man: true
  birth: 12/3/12
  map: { width: 25,height: 25}
  list: [1,2,3,4,5]
  cat:
    name: coffee
    age: 8

【3】在Spring Boot测试包(test包)中进行测试

package com.czd.springbootdemo;

import bean.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootdemoApplicationTests {

    @Autowired
    private Person person;
    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}

输出结果

Person{name='张三', age=20, man=true, birth=Mon Dec 03 00:00:00 CST 2012, map={width=25, height=25}, list=[1, 2, 3, 4, 5], cat=Cat{name='coffee', age=8}}

五、解决配置文件编码问题
【1】打开IDEA的Settings界面,在输入框中输入: File Encoding,如下图:
在这里插入图片描述
【2】在下面找到 Default encoding for properties files,选择 UTF-8,并且在后面打上勾就可以了,如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值