Spring Boot學習筆記(2)——SpringBoot核心配置(yml/properties 文件)

SpringBoot的配置文件

1、Spring Boot 使用一個全局配置文件,放置在 src/main/resources 目錄或 類路徑的 /config 下,命名固定,爲:
application.properties 或者 application.yml
2、配置文件的作用:修改 Spring Boot 自動配置的默認值,例如:修改springboot項目的啓動的默認端口:
application.properties文件中:

server.port=8088

application.yml文件中:

#修改springboot項目啓動的默認端口號,也可以在 application.yml 文件中修改,當 properties文件和yml文件同時存在時,優先起效果的時properties文件中的配置
server:
  port: 8089

3、yml不是一個標記語言,標記語言是spring以前的配置文件,大多是xxxx.xml,yml使用的是YAML,以數據爲中心,配置數據的時候具有面向對象的特徵;比 json、xml 等更適合做配置文件

YAML語法格式

1、使用key: value的形式來表示一組鍵值對(注意:冒號後面必須要有空格
2、使用空格縮進來表示層級關係,並且縮進的空格數不重要,但是同一層級下的元素,縮進的空格數必須一直
3、key和value的書寫大小寫敏感
4、YMAL常用寫法:
1)、value可以是數值,字符串,布爾,日期,對象…
2)、當value是字符串時,默認不需要加上引號,但是如果value中有特殊字符,則需要加上雙引號,如:name: “mengxuegu \n jiaoyu” 輸出: mengxuegu 換行 jiaoyu
name: 'mengxuegu \n jiaoyu 輸出: mengxuegu \n jiaoyu
3)、yml文件定義對象:

emp:
	lastName: xiaomeng
	age: 22
	salary: 10000
#或者
emp: {lastName: xiaomeng, age: 22, salary: 10000}

4)、yml文件定義list

fortes:
	- java
	- python
	- hadoop
#或者
fortes: [java, python, hadoop]
yaml 配置文件向javaBean注入值

1、編寫javaBean

public class Forte {

	private String name;
	private Integer time;
	
	getter/setter……
}

/**
 * 1、@Component 表示將當前類作爲一個sping的組件,提供給spring使用
 * 2、@ConfigurationProperties 告訴springboot,將  properties/yml 配置文件中的對應屬性的值,映射到這個組件類中,與類中的屬性進行一一綁定
 * 		prefix = "emp"  表示將配置文件中 前綴明爲 emp 的屬性來與這個類中進行映射
 * @author asong
 *
 */
@Component
@ConfigurationProperties(prefix = "emp")
public class Emp {

	private String lastName;
	private Integer age;
	private Double salary;
	private Boolean boss;
	private Date birthday;

	private Map<String, Object> map;
	private List<String> list;

	private Forte forte;

	private List<Forte> forteList;

	getter/setter……
}

2、編寫application.yml文件(注意同一級元素左側縮進的空格數相同

emp:
  lastName: 張三
  age: 28
  salary: 20000
  boss: true
  birthday: 1991/1/1
  map: 
    key1: value1
    key2: value2
  list:
    - one
    - two
    - three
  forte:
    name: java
    time: 8
  forteList:
    - name: python
      time: 3
    - name: C++
      time: 4

3、使用application.properties文件注入值(與第2點功能一樣,只需一個即可

#\u674E\u56DB:李四
emp.lastName=\u674E\u56DB
emp.age=30
emp.salary=10000
emp.boss=false
emp.birthday=2000/10/10
emp.map.key1=value1
emp.map.key2=value2
emp.list=1,2,3
emp.forte.name=java
emp.forte.time=10
emp.forteList[0].name=phthon
emp.forteList[0].time=10
emp.forteList[1].name=C++
emp.forteList[1].time=20

4、使用springboot的單元測試,運行即可發現Emp 對象中的各個屬性注入了配置文件中配置的值

使用@Value註解向JavaBean注入值

1、可以使用spring的@Value註解向類中的屬性注入配置文件中的值

@Value("${emp.last-name}")
private String lastName;
@Value("#{10*2}")
private Integer age;
@Value("8000")
private Double salary;

2、@Value註解和@ConfigurationProperties註解功能有異同,具體如下:
在這裏插入圖片描述
3、JSR303數據校驗_配置文件注入的值,例如:
校驗是否爲合法的郵箱地址:
1)、在Emp類上加上一個 @Validated 註解
2)、在listName屬性上添加 @Email 註解,表示對注入的lastName的值進行email的校驗,看是符合郵箱的格式
3)、當使用 @ConfigurationProperties(prefix = “emp”) 註解來注入值時,測試項目會報錯,因爲從配置文件中注入的lastName的值不符合郵箱格式
4)、當使用@Value註解時,測試項目不會報錯

4、@ConfigurationProperties 和 @Value 的各自使用場景:
如果只是在某個業務邏輯中需要獲取配置文件中的某個屬性值,就使用 @Value
如果專門使用javaBean和配置文件進行映射,就使用 @ConfigurationProperties

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章