Spring Boot (2) - 配置文件

1 SpringBoot配置文件類型和作用

  • SpringBoot是基於約定的,所以很多配置都有默認值,但如果想使用自己的配置替換默認配置的話,就可以使用application.properties或者 application.yml(application.yaml)進行配置。SpringBoot默認會從Resources目錄下加載application.propertiesapplication.yml(application.yaml)文件

  • 其中,application.properties文件是鍵值對類型的文件,之前一直在使用,所以此處不在對properties文件的格式進行闡述。除了properties文件外,SpringBoot還可以使用yml文件進行配置。

2 application.yml配置文件

  • YML文件格式是YAML (YAML Aint Markup Language)編寫的文件格式,YAML是一種直觀的能夠被電腦識別的的數據數據序列化格式,並且容易被人類閱讀,容易和腳本語言交互的,可以被支持YAML庫的不同的編程語言程序導入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以數據爲核心的,比傳統的xml方式更加簡潔。
  • YML文件的擴展名可以使用.yml或者.yaml

2.1 yml配置文件的語法

2.1.1 配置普通數據

  • 語法:key: value
  • 注意:value之前有一個空格

2.1.2 配置對象數據

  • 語法:
key:
 key1: value1
 key2: value2

或者:

key: {key1: value1,key2: value2}

注意:key1前面的空格個數不限定,在yml語法中,相同縮進代表同一個級別


person:
 name: haohao
 age: 31
 addr: beijing
#或者
person: {name: haohao,age: 31,addr: beijing}

2.1.3 配置Map數據

同上面的對象寫法

2.1.4 配置數組(List、Set)數據

  • 語法:
key:
- value1
- value2
或者:
key: [value1,value2]


city:
	- beijing
	- tianjin
	- shanghai
	- chongqing
#或者
city: [beijing,tianjin,shanghai,chongqing]
#集合中的元素是對象形式
student:
	- name: zhangsan
	  age: 18
	  score: 100
    - name: lisi
      age: 28
      score: 88
    - name: wangwu
      age: 38
      score: 90

注意:value1與之間的 - 之間存在一個空格

3 配置文件與配置類的屬性映射方式

3.1 註解@Value映射

我們可以通過@Value註解將配置文件中的值映射到一個Spring管理的Bean的字段上

在這裏插入圖片描述

  • Controller
@Controller
public class QuickController {

    @Value("${name}")
    private String name;

    @Value("${person.addr}")
    private String addr;

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){

        return "name: " + name + " addr: " + addr;
    }

}

在這裏插入圖片描述

3.2 使用註解@ConfigurationProperties映射

   <!--@ConfigurationProperties 的執行器的配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
@Controller
@ConfigurationProperties(prefix="person")
public class Quick3Controller {

    private String name;
    private String addr;

    public String getName() {
        return name;
    }

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

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @RequestMapping("/quick3")
    @ResponseBody
    public String quick3(){

        return "name: " + name + " addr: " + addr;
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章