一、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 {