1、配置文件
(1)全局的配置文件
名稱有兩種:
application.properties和application.yml
(2)作用
修改springboot自動配置的默認值(之所以springboot能夠自動啟動,就是因為springboot的底層已經配置了)
2、YAML(YAML Aint's Markup Language)
(1)特點
以數據為中心,比json和xml等更適合做配置文件
(2)yaml配置方式與xml方式對比
yaml方式:
server: port: 8081
xml方式:
<server>
<port>8080</port>
</server>
測試:
要注意:port:后面要加空格
3、YAML語法
(1)基本語法
- k:空格v 表示一對鍵值對
- 以空格的縮進來控制層級關系,只要是左對齊的一列都指同一層級,如:
server: port: 8081 path: /nnnn
- 屬性和值是大小寫敏感的
(2)值的寫法
字面量(數字、字符串、布爾)
server: port: 8081 path: /nnnn
寫法為 k:v:空格 字面量
字符串默認不用加上單引號或者雙引號,加上雙引號的話,不會轉義字符串里面的特殊字符,也就是說特殊字符依舊有效;單引號會轉義特殊字符
對象
student: name: zhai age: 23
行內寫法:
student:{name: zhai,age: 23}
數組:
用-值的方式來表示數組中的一個元素
students: - zhai - zhang - liu - tom
行內寫法:
students: [zhai,zhang,liu,tom]
(3)獲取yaml配置文件中的數據
定義兩個實體類,其中student實體類的屬性包括Course類:
@Data @Component @ConfigurationProperties(prefix = "student")//告訴springboot將本類中的所有屬性和配置文件的相關配置進行綁定 public class Student { //prefix:配置文件中哪一個名稱下面的屬性進行一一映射 private String sname; private int age; private Map<String,Object> maps; private List<Object> list; private Course course; }
@Data public class Course { private String courseno; private String coursename; }
創建yaml配置文件:
student: sname: zhai age: 12 maps: {k1: 12,k2: 13} list: - zhai - zhang course: courseno: 202007 coursename: javaweb
創建properties文件:
#配置student student.age=12 student.sname=zhai student.maps.k1=1 student.maps.k2=2 student.list=a,b,c student.course.courseno=202007 student.course.coursename=java
測試類:
//可以在測試期間很方便地類似編碼一樣進行自動注入等容器的功能 @SpringBootTestclass Springboot03ApplicationTests { @Autowired Student student; @Test void contextLoads() { System.out.println(student); } }
需要導入的依賴:配置文件處理器,配置文件進行綁定會有提示
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.2.1.RELEASE</version> </dependency>
(4)properties文件中文亂碼的解決方案: