一、SpringBoot配置文件類型
SpringBoot是基于約定的,所以很多配置都有默認值,但如果想使用自己的配置替換默認配置的話 ,就可以自己編寫配置文件進行相應配置,起步依賴spring-boot-starter-parent 中,有配置文件的引入,如下:
<resource><filtering>true</filtering><directory>${basedir}/src/main/resources</directory><includes><include>**/application*.yml</include><include>**/application*.yaml</include><include>**/application*.properties</include></includes>
</resource>
可以看到,${basedir}/src/main/resources 表示資源的加載文件,資源文件包括下面三種格式的,也就是說,咱們在配置SpringBoot資源文件的時候都是以 application*.yml、application*.yaml、application*.properties文件格式,.yml 和 .yaml 文件相同,而且在配置的時候一般都以 application 命名,所以SpringBoot配置文件可以歸為以下兩種:
application.properties
application.yml(application.yaml)
1. application.properties 配置文件
咱們可以創建 application.properties 配置文件去覆蓋 SpringBoot 的默認配置,可以在resources 文件夾下創建 application.properties 文件,這里就以手動配置 Tomcat 端口去覆蓋SpringBoot 默認配置為例,我們知道 Tomcat 默認打開端口是8080,咱們可以通過 application.properties 配置文件去修改這個默認配置:
server.port=8888
添加配置之后,運行項目

properties 文件是以鍵值對的形式編寫,可以看到,通過修改application.properties 配置文件,已經將 Tomcat 端口改為 8888,覆蓋了之前的配置,由于 properties 文件在以往用的也比較多,較為常見,這里就不做過多講述,主要還是對 yml 配置文件進行學習。
2. application.yml(application.yaml) 配置文件
YML文件格式是YAML (YAML Aint Markup Language)編寫的文件格式,YAML是一種直觀的能夠被電腦識別的的數據數據序列化格式,并且容易被人類閱讀,容易和腳本語言交互的,可以被支持YAML庫的不同的編程語言程序導入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以數據為核心的,比傳統的xml方式更加簡潔。YML文件的擴展名可以使用.yml或者.yaml。
【1】yml配置文件語法
yml 的配置可以分為下面幾種,我們先在 resources 文件夾下面創建 application.yml 配置文件
配置普通數據
配置對象數據
配置Map數據
配置數組數據
配置普通數據:
語法: key: value
eg:
name: onestar
注意:value前面有一個空格
配置對象數據:
- 語法1:
- key:
key1: value1
key2: value2
- key:
- 語法2:
- key: {key1: value1,key2: value2}
- eg:
person:name: oneStarage: 18addr: yichun#或者
person: {name: oneStar,age: 18,addr: yihcun}
注意:key1前面的空格個數不限定,在yml語法中,相同縮進代表同一個級別
配置Map數據:
- 配置Map數據和配置對象數據相同
- eg:
map:key1: value1key2: value2
配置數組數據:
- 語法1
- key:
- value1
- value2
- key:
- 語法2
- key: [value1,value2]
- eg:
city:- beijing- tianjin- shanghai- chongqing#或者
city: [beijing,tianjin,shanghai,chongqing]#集合中的元素是對象形式
student:- name: oneStarage: 18score: 100- name: twoStarage: 28score: 88- name: threeStarage: 38score: 90
注意:value1與之間的 - 之間存在一個空格
二、配置文件與配置類的屬性映射
配置文件中的配置,不管是 properties 文件還是 yml 文件,有一些配置 SpringBoot 會自動去識別,比如 server.port=8888 配置,但有一些我們自定義的配置,SpringBoot 并不能自動識別,怎樣才能讓 SpringBoot 認識自己配置的信息呢,這里就有兩種方法:
使用注解 @Value 映射
使用注解 @ConfigurationProperties 映射
1、使用注解 @Value 映射
我們可以通過@Value注解將配置文件中的值映射到一個Spring管理的Bean的字段上,這里以 yml 文件進行說明
application.yml 配置如下:
person:name: oneStarage: 18
實體Bean代碼如下
@Controller
public class QuickController {@Value("${person.name}")private String name;@Value("${person.age}")private int age;@RequestMapping("/quick")@ResponseBodypublic String quick(){return "name="+name+",age="+age;}
}
運行后,瀏覽器訪問地址:
http://localhost:8080/quick?localhost:8080結果如下:
naem=oneStar,age=18
2、使用注解 @ConfigurationProperties 映射
使用 Value 映射能夠精確的匹配到某一屬性,但如果有很多屬性,就帶來了不便,因此,還可以使用 @ConfigurationProperties 映射,通過注解@ConfigurationProperties(prefix="配置文件中的key的前綴")可以將配置文件中的配置自動與實體進行映射
application.yml 配置如下:
person:name: oneStarage: 19
實體Bean代碼如下:
@Controller
@ConfigurationProperties(prefix = "person")
public class QuickController {private String name;private int age;public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}@RequestMapping("/quick")@ResponseBodypublic String quick(){return "name="+name+",age="+age;}
}
運行后,瀏覽器訪問地址:
http://localhost:8080/quick?localhost:8080結果如下:
name=oneStar,age=19
注意:使用@ConfigurationProperties方式可以進行配置文件與實體字段的自動映射,但需要字段必須提供set方法才可以,而使用@Value注解修飾的字段不需要提供set方法.