首先,咱們打開咱們的上一篇博客中建立的項目的resource文件夾中能夠看到,在咱們的SpringBoot應用使用一個全局的配置文件,配置文件名是固定的:application.xxx。css
配置文件的做用:修改SpringBoot自動配置的默認值;由於大多數的配置SpringBoot在底層都給咱們自動配置好,因此咱們只須要在配置文件中根據應用的實際需求更改配置便可。java
例如:咱們在默認的配置文件application.properties進行以下配置:git
server.port=8081
server.servlet.context-path=/test
而後啓動個人SpringBoot應用,在控制檯中咱們就會發現,咱們啓動的端口和訪問路徑都發生了改變:github
啓動瀏覽器,在瀏覽器中輸入:http://localhost:8081/test/hello,便可正常訪問咱們的應用。web
在這裏咱們須要重點說明的是,除了.properties格式的配置文件之外,SpringBoot還有一種.yml的配置文件格式,強烈推薦後者做爲配置文件的格式。spring
在介紹yml以前呢,咱們先介紹一個概念:標記語言。也稱爲標誌語言、標識語言、markup language)是一種將文本(Text)以及文本相關的其餘信息結合起來,展示出關於文檔結構和數據處理細節的計算機文字編碼。與文本相關的其餘信息(包括例如文本的結構和表示信息等)與原來的文本結合在一塊兒,可是使用標記(markup)進行標識。當今普遍使用的標記語言是超文本標誌語言(HyperText Markup Language,HTML)和可擴展標誌語言(eXtensible Markup Language,XML) json
.yml的全稱是:YAML,是」YAML Ain’t a Markup Language」的遞歸縮寫,意思是:YAML不是一種標記語言。在開發的這種語言時,YAML 的意思實際上是:」Yet Another Markup Language」:YAML還是一種標記語言,但爲了強調這種語言以數據作爲中心,而不是以標記語言爲重點,而用反向縮略語重命名 。瀏覽器
一句話:YAML以數據爲中心,比json、xml等更適合作配置文件;springboot
舉個簡單的例子:ruby
YAML配置端口文件:
server:
port: 8081
XML配置端口文件:
<server>
<port>8081</port>
</server>
YAML使用可打印的Unicode字符,可以使用UTF-8或UTF-16。
使用空格爲文件縮進來表示結構,只要是左對齊的一列數據,都是同一個層級的;不過不能使用跳格字符(TAB)。
例如:
server:
port: 8081
path: /hello
註解由井字號( # )開始,能夠出如今一行中的任何位置,並且範圍只有一行(也就是通常所謂的單行註解)
server: # 端口配置
port: 8081
每一個清單成員以單行表示,並用短槓和空格( - )起始。或使用方括號( [ ] ),並用逗號和空白( , )分開成員。
pets: # 每一個成員當行顯示
‐ cat
‐ dog
‐ pig
pets: [cat,dog,pig] # 行內寫法
每一個散列表的成員用冒號和空格( : )分開鍵值和內容。或使用大括號( { } ),並用逗號和空格( , )分開。
friends: # 每一個屬性單行顯示
lastName: zhangsan
age: 20
friends: {lastName: zhangsan,age: 18} # 行內寫法
字符串日常並不使用引號,但必要的時候能夠用雙引號( 「 )或單引號( ‘ )框住。
例如:name: 「zhangsan \n lisi」 輸出爲: zhangsan 換行 lisi
區塊的字符串用縮進和修飾符(非必要)來和其餘數據分隔,有新行保留(preserve)(使用符號 | )或新行摺疊(flod)(使用符號 > )兩種方式。
data: >
Wrapped text
will be folded
into a single
paragraph
Blank lines denote # 空白行表明段落之間的間距
paragraph breaks
在單一文件中,可用連續三個連字號(—)區分多個文件。
--- # 電影清單 - Casablanca - North by Northwest - Notorious
重複的內容可以使從參考標記星號 ( * )複製到錨點標記( & )。
# 文件中重複的部分用這個方法處理:使用錨點(&)和引用(*)標籤將"aa"散列表的內容複製到"bb"散列表
aa: &id001
city: East Centerville
state: KS
bb: *id001
指定格式可使用兩個驚歎號( !! ),後面接上值。
a: 123 # 整數
b: "123" # 字符串
c: 123.0 # 浮點數
d: !!float 123 # 浮點數,使用!!表示爲嚴格形態
e: !!str 123 # 字符串,使用嚴格形態
f: !!str Yes # 字符串,使用嚴格形態
項目結構圖:
建立一個寵物類:Dog.java
package com.example.springboot02.controller.bean;
/** * @Author: REN * @Description: * @Date: Created in 0:31 2018/8/22 */
public class Dog {
private String name;
private Integer age;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
建立主人類:Person.java
package com.example.springboot02.controller.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: REN * @Description: * @Date: Created in 0:25 2018/8/22 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Date birth;
private List<Object> list;
private Map<String,Object> maps;
private Dog dog;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", birth=" + birth +
", list=" + list +
", maps=" + maps +
", dog=" + dog +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
在pom.xml中導入以下依賴:
<!--導入配置文件處理器,配置文件進行綁定就會有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在配置文件application.yml中進行以下編寫:
server: port: 8081 person: name: ren age: 18 birth: 2018/08/22 maps: {k1: v1,k2: v2} list: - hi - hello dog: name: rack age: 2
建立PersonController類:
package com.example.springboot02.controller;
import com.example.springboot02.controller.bean.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** * @Author: REN * @Description: * @Date: Created in 0:19 2018/8/22 */
@RestController
public class PersonController {
@Autowired
Person person;
@RequestMapping("/person")
public Person person() {
return person;
}
}
直接運行主函數,在瀏覽器輸入:http://localhost:8081/person 便可看到內容已經成功的進行了注入:
這一節,咱們簡單介紹了有關Spring Boot的配置文件信息。着重介紹了有關YAML文件的有關語法,以及如何經過配置文件將屬性注入到javaBean中,這一節主要掌握如何經過YAML文件對Spring Boot項目屬性配置便可。
參考文獻:
尚硅谷,SpringBoot核心技術篇
轉載說明: 支持轉載,但請保留原做者,原文連接,微信公衆號二維碼