首先我們需要創建一個SpringBoot項目,在這個項目里面我們可以創建2個pojo類
第一個Person.class
@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
// 基本語法
private String lastName;
private Integer age;
private Boolean boss;
private Date birthday;
// 集合形式
private Map<String, Object> maps;
private List<Object> lists;
// 對象形式
private Dog dog;
}
以上使用了lombok的依賴,所以直接使用@Data就可以覆蓋這個pojo類的setter getter 和 toString方法
lombok的依賴如下
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
由於上面的Person類里面又關聯了Dog類,所以添加下面的Dog.class
@Data
public class Dog {
private String name;
private Integer age;
}
接下來我們就要配置application.yaml文件里面的內容了,與Person類的字段要一一對應
application.yaml
person:
lastName: "張三"
age: 18
boss: false
birthday: 2018/01/25
# 行內式
maps: {key1: value1, key2: value2}
lists:
- lisi
- pcliu
- tom
dog:
name: 小狗
age: 2
書寫好以上的信息以后就要思考如何將配置文件中配置的每一個屬性的值,映射到這個組件中?
主要使用Person類當中的@ConfigurationProperties這個注解:告訴SpringBoot將本類中的所有屬性和配置文件中相關的配置進行綁定;
它當中的默認參數prefix = "person":配置文件中哪個下面的所有屬性進行一一映射
最后使用@Component這個注解:只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能
注意還要在pom.xml文件里導入以下的依賴:導入配置文件處理器,配置文件進行綁定就會有提示
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
最后我們就可以在測試類里面進行打印yaml文件里面的值
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01YamlApplicationTests {
@Autowired
private Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
最后得出的結果就如下圖

