SpringBoot 配置檔案給實體注入值

巫山♔發表於2020-10-03

SpringBoot 預設的全域性配置檔案有兩個 application.propertiesapplication.yml

properties用法

# 例如修改埠號 直接賦值
server.port=8888

yaml用法

# 例如修改埠號
server:
	port: 8888
  • YML中賦值是以鍵值對的形式,且利用縮排表示層級關係,同一級縮排必須一致
  • 大小寫敏感,支援鬆散寫法,且冒號後面必須有一個空格

通過配置檔案給實體類注入屬性

// 實體類
@Component // 把實體類放入到spring容器中
@ConfigurationProperties(prefix = "student") // 識別配置檔案
public class Student {
    private String name;
    private int age;
    private boolean sex;
    private Date birthday;
    private Map<String, Object> location;
    private String[] hobbies;
    private List<String> skills;
    private Pet pet;
    
    // .... set/get/toString
}
# yml 配置檔案
student: 
	name: zs
	age: 23
	sex: true
	birthday: 2020/10/1
	location: {province: 湖北,city: 武漢, zone: 洪山}
	hobbies: [足球, 籃球]
	skills: [程式設計, 金融]
	pet: 
		nickName: wc
		strain: hsq

在這裡注意不同資料型別的寫法,簡單的資料直接賦值

# map型別和物件型別 的兩種寫法
# 1.行內寫法
location: {province: 湖北,city: 武漢, zone: 洪山}
pet: {nickName: wc, strain: hsq}

# 2.分行寫
location:
	province: 湖北
	city: 武漢
	zone: 洪山
pet: 
	nickName: wc
	strain: hsq
# 陣列、list、set
# 1、行內寫法, 其中中括號還可以省略
hobbies: [足球, 籃球]
skills: [程式設計, 金融]

# 2、分行寫
hobbies:
	- 足球
	- 籃球
skills: 
	- 程式設計
	- 金融

到 SpringBoot 測試檔案中測試輸出

    @Autowired
    Student student;

    @Test
    void contextLoads() {
        System.out.println(student);
    }

結果

Student{name='zs', age=23, sex=true, birthday=Thu Oct 01 00:00:00 CST 2020, location={province=湖北, city=武漢, zone=洪山}, hobbies=[足球,籃球], skills=[程式設計, 金融], pet=Pet{nickName='wc', strain='hsq'}}

上面yml中注意

# 如果對字串加單引號,雙引號會有什麼區別
location: {province: "湖北",city: '武漢', zone: 洪山}
# 如果引號中只是字串時沒什麼區別

location: {province: "湖\n北",city: '武\n漢', zone: 洪\n山}
# 此時雙引號中的轉義字元會被識別,會換行,單引號和不加引號會原樣輸出

也可以使用properties注入

student.name=ls
student.age=24
...

連個配置檔案可以互補,properties檔案優先順序高於yml

相關文章