Spring boot的配置文件:yuml

一、yum配置文件的簡單介紹

  在resources目錄下,可以放入spring boot的全局配置文件。spring boot全局配置文件的命名默認如下:

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自動配置的默認值。

什麼是yum文件?

YAML(YAML Ain’t Markup Language)

  • YAML A Markup Language:是一個標記語言
  • YAML isn’t Markup Language:不是一個標記語言

以數據爲中心,比json、xml等更適合做配置文件

yuml文件例子:

server:
  port: 8888

以前使用xml配置文件的配置

<server>
     <port>8888</port>
</server>

二、yuml文件的基本語法

1、基本語法

  • 以鍵值對的形式,但注意k與v之間有空格。如:K:(空格)V
  • 以空格的縮進來控制層級關係。只要是左對齊的一列數據,都屬於同一級
    例如:
server:
  port: 8888
  path: /hello

port與path都是屬於server下的同一級

2、幾種值的書寫方式

2.1 字面量(普通的值,如:數字、字符串、布爾值)

k: v——字面量

注意:
1)字符串默認不用加上單引號或者雙引號
2) “”:雙引號;不會轉義字符串裏面的特殊字符;特殊字符會作爲本身想表示的意思。例如: name: “zhangsan \n lisi”  輸出;zhangsan 換行 lisi
3) ''單引號;會轉義特殊字符,特殊字符最終只是一個普通的字符串數據 。例如:name: ‘zhangsan \n lisi’:輸出;zhangsan \n lisi

2.2 對象、Map(以鍵值對的形式)

k: v——在下一行來寫對象的屬性和值的關係;需要注意縮進

person:
 name: zhangsan
 age: 100

行內寫法:

persion: {name: zhangsan,age: 100}

2.3 數組(List、Set)

-(空格)值來表示

animals:
 - cat
 - tiger
 - lion

行內寫法

animals: [cat,tiger,lion]

3、配置文件屬性注入Bean對象

1)yuml配置文件(application.yml):

person:
  name: zhangsan
  age: 28
  isBoss: false
  map: {k1: admin,k2: 123}
  list:
    - kkk
    - admin
    - 130
  dog:
    name: Petty
    age: 5
  birth: 1990/12/30

2、javaBean對象:

Person類:

/**
 * @ConfigurationProperties(prefix = "person") :告訴spring將本類中的所有屬性和配置文件中的相關配置進行綁定
 * 其中,prefix = "person"用來指定對配置文件中哪個下面的所有屬性進行一一映射
 *
 * 必須將Bean對象加入到容器中
 *
 * @PropertySource(value = "classpath:application.yml") 加載指定yaml文件的配置,默認路徑爲./src/main/resources
 **/

@Component
@PropertySource(value = "classpath:application.yml")
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private int age;
    private boolean isBoss;
    private Map<String,Object> map;
    private List<Object> list;
    private Dog dog;
    private Date birth;

   public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isBoss() {
        return isBoss;
    }

    public void setBoss(boolean boss) {
        isBoss = boss;
    }

    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;
    }

    public Date getBirth() {
        return birth;
    }

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", isBoss=" + isBoss +
                ", map=" + map +
                ", list=" + list +
                ", dog=" + dog +
                ", birth=" + birth +
                '}';
    }
}

Dog對象:

public class Dog {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

注意
1)javaBean對象中,getter/setter方法不能少。
2)在需要進行屬性注入的JavaBean上,需要添加兩個註解:
  @Component 將Bean對象裝配到容器中。只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能。
  @ConfigurationProperties(prefix = “person”) :告訴spring將本類中的所有屬性和配置文件中的相關配置進行綁定。其中,prefix = “person” 用來指定對配置文件中哪個下面的所有屬性進行一一映射。

3、在pom.xml文件中導入配置文件處理器

  <!--導入配置文件處理器,在編寫配置文件時就會提示 在pom.xml-->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-configuration-processor</artifactId>
         <optional>true</optional>
     </dependency>

4、Spring junit單元測試

import com.zm.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;

/* *
 * @description //TODO spring boot的單元測試
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootQuickstartApplicationTests {

    @Autowired
    Person p;

    @Test
    public void testOne(){
        System.out.println(p);
    }

}

注意:
1)測試類必須是public的。
2)測試方法必須是public的。
3)@Test應用的包爲 org.junit.Test
4)在測試類前,需要加上:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootQuickstartApplicationTests {
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章