SpringBoot - YAML

作者: BzCoder | 来源:发表于2018-05-04 15:07 被阅读552次

    最近在学习Spring Boot后端开发的相关知识,有些知识点看了转头就忘,特此边学记录下,顺便加深记忆理解。

    1.什么是YAML


    YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,是一种以数据为中心表的编程语言,因为文件以.YML结尾,所以YML又被称为“やめる”(雅麦噜)文件,相比XML,JSON更加适合作为配置文件。

    下面是三种格式的配置文件的对比。当然,在数据量比较少的时候感觉不明显,但是在数据量大的时候,YML就有明显的优势。因为YML可以省略大量的前缀。

    YML:

    server:
      port:8080
      url:192.168.1.1
    

    XML:

    <server>
          <port>8080</port>
          <url>192.168.1.1</url>
    </server>
    

    .properties:

    server.port=8080
    server.url=192.168.1.1
    

    2.YML基本语法


    YML是一个大小写以及空格敏感的语言。以空格的缩进来控制层级关系。空格的个数不重要,只要对齐就表示在同一个层级。
    基本句式: K:空格V

    普通值:

    字符串默认不用加引号

    双引号:不会转义特殊字符:

    name:"test \n test2"
    输出:
    test
    test2
    

    单引号:会转义特殊字符

    name:'test \n test2'
    输出:test \n test2
    

    对象(两种方式):

    user:
      username: 张三
      password: 123456
    
    user: { username: 张三, password: 123456}
    

    数组(List Set):

    user
     - zhangsan
     - lisi
     - wangwu
    
    user: {zhangsan,lisi,wangwu}
    

    3.SpringBoot案例

    创建application.yml:

    person:
      lastName: zhangsan
      age: 18
      boss: false
      birth: 2018/05/04
      map: {k1: v1,k2: v2}
      list:
        - lisi
        - good
      dog:
        name: moggy
        age: 2
    

    创建Person类:

    package com.springboot.bean;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author BaoZhou
     * @date 2018/5/4
     * @ConfigurationProperties:这个类文件中的属性是配置文件中的设定
     */
    @Component
    @ConfigurationProperties(prefix = "person")
    //需要使用以上两个注解,person可以替换成你配置文件中的名字。
    public class Person {
        private String lastName;
        private Integer age;
        private Boolean boss;
        private Date birth;
    
        private Map<String,Object> map;
        private List<Object> list;
        private Dog dog;
    
        @Override
        public String toString() {
            return "Person{" +
                    "lastName='" + lastName + '\'' +
                    ", age=" + age +
                    ", boss=" + boss +
                    ", birth=" + birth +
                    ", map=" + map +
                    ", list=" + list +
                    ", dog=" + dog +
                    '}';
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Boolean getBoss() {
            return boss;
        }
    
        public void setBoss(Boolean boss) {
            this.boss = boss;
        }
    
        public Date getBirth() {
            return birth;
        }
    
        public void setBirth(Date birth) {
            this.birth = birth;
        }
    
        public Map<String, Object> getMap() {
            return map;
        }
    
        public void setMap(Map<String, Object> map) {
            this.map = map;
        }
    
        public List<Object> getList() {
            return list;
        }
    
        public void setList(List<Object> list) {
            this.list = list;
        }
    
        public Dog getDog() {
            return dog;
        }
    
        public void setDog(Dog dog) {
            this.dog = dog;
        }
    }
    

    Dog类随意定义,这里就不贴代码了。

    建立测试类:

    package com.springboot;
    
    import com.springboot.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;
    
    /**
     * SpringBoot单元测试
     *
     * @author BaoZhou
     * @date 2018/5/4
     */
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootConfigApplication {
        @Autowired
        Person person;
    
        @Test
        public void contextLoads() {
            System.out.println(person.toString());
        }
    }
    

    这里person类就通过YML文件注入了

    4.运行测试结果


    运行后可以看到person输出内容


    运行结果

    今天有关与YML的学习就到这里,喜欢的话点个赞吧。

    相关文章

      网友评论

      本文标题:SpringBoot - YAML

      本文链接:https://www.haomeiwen.com/subject/bywrrftx.html