SpringBoot配置:yaml介紹

1、介紹yml  

一、Spring Boot使用一個全局的配置文件(配置文件的名字是固定的)java

  (1)application.propertiesspring

  (2)application.yml數組

二、配置文件放在src/main/resources目錄或者類路徑/config下app

三、yml是YAML(YAML Ain't Markup Lanaguage)語言文件,以數據爲中心,比josn,xml更適合作配置文件 。http://http:www.yaml.org參考語法規範。ide

 

2、YAML語法:spring-boot

一、基本語法:測試

  k:(空格)v   : 表示一對鍵值對(空格必須有this

  以空格的縮進來控制層級關係,只要是右對齊的一列數據,都是一個層級的 spa

       屬性和值也是大小寫敏感的。code

server:
  port: 8081
  path:/hello

二、值的寫法

  (1)普通的值(數字、字符串、布爾值)

  k: v    : 字面直接來寫。

  字符串默認不用加單引號或雙引號;

  若是使用雙引號:字符串中有特殊字符的話,不能識別特殊字符,不會進行轉義。

  例如:     

  name: "zhangsan \n lisi"      輸出:     zhangsan  換行   lisi

  若是使用單引號,特殊字符會轉成普通字符輸出。

  輸出:zhangsan \n lisi

 

  (2)Map

  k: v :在下一行來寫屬性和值的關係,注意縮進

  對象仍是k: v的方式

friends:
    lastName: zhangsan
    age: 20

  行內寫法:

friends: {lastName: zhangsan,age: 20}

 數組(List、Set):

  用 - 值表示數組中的一個元素:

pets:
    - cat
    - dog
    - pig

行內寫法:

pets: [cat,dog,pig]

 

 

示例:

bean文件

  

package com.song.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;

/**j將配置文件中每個屬性值映射到這個數組中,
 *ConfigurationProperties告訴Spring boot將本類中全部屬性和配置文件中相關的配置綁定
 * prefix = "person":配置文件中那個下的全部屬性進行一一映射
 *只有這個組件是容器中的組件,才能使用容器提供的功能
 * Created by Administrator on 2018/6/12 0012.
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private  String lastName;
    private  Integer age;
    private Boolean boos;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;

    private Dog dog;


    @Override
    public String toString() {
        return "Person{" +
                "lastName='" + lastName + '\'' +
                ", age=" + age +
                ", boos=" + boos +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", 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 getBoos() {
        return boos;
    }

    public void setBoos(Boolean boos) {
        this.boos = boos;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }
}

 yaml文件

person:
   lastName: zhangsan
   age: 18
   boss: true
   birth: 2017/12/12
   maps: {name: 小花,age: 2}
   lists:
     - lisi
     - zhaoliu
   dog:
    name: 小花
    age: 2    

pom.xml的依賴配置

<!--導入配置文件處理器,配置文件進行綁定就會有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

最後測試打印結果爲:

Person{lastName='zhangsan', age=18, boos=null, birth=Tue Dec 12 00:00:00 GMT+08:00 2017, maps={name=小花, age=2}, lists=[lisi, zhaoliu], dog=Dog{name='小花', age=2}}

  

對應的properties文件配置

person.lastName=zhangsan
person.age=28
person.maps.k1=xiahua
person.maps.k2=lisi
person.dog.name=xiaohua 
person.dog.age=2
person.lists=a,b,c
相關文章
相關標籤/搜索