3.3 JSR303數(shù)據(jù)校驗(yàn)
先看如何使用
? Springboot中可以用@Validated
來校驗(yàn)數(shù)據(jù)救崔,如果數(shù)據(jù)異常則統(tǒng)一拋出異常塞栅,方便異常中心統(tǒng)一處理荒勇。
? 這里我們寫個(gè)注解讓name只支持Email格式:
@Component
@ConfigurationProperties(prefix = "person")
@Validated //數(shù)據(jù)校驗(yàn)
public class Person {
@Email()
private String name;
}
導(dǎo)入依賴:
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
運(yùn)行結(jié)果:default message[不是一個(gè)合法的電子郵件地址]
常見參數(shù)
@NotNull(message="名字不能為空")
private String userName;
@Max(value=120,message="年齡最大不能查過120")
private int age;
@Email(message="郵箱格式錯(cuò)誤")
private String email;
空檢查
@Null 驗(yàn)證對(duì)象是否為null
@NotNull 驗(yàn)證對(duì)象是否不為null, 無法查檢長(zhǎng)度為0的字符串
@NotBlank 檢查約束字符串是不是Null還有被Trim的長(zhǎng)度是否大于0,只對(duì)字符串,且會(huì)去掉前后空格.
@NotEmpty 檢查約束元素是否為NULL或者是EMPTY.
Booelan檢查
@AssertTrue 驗(yàn)證 Boolean 對(duì)象是否為 true
@AssertFalse 驗(yàn)證 Boolean 對(duì)象是否為 false
長(zhǎng)度檢查
@Size(min=, max=) 驗(yàn)證對(duì)象(Array,Collection,Map,String)長(zhǎng)度是否在給定的范圍之內(nèi)
@Length(min=, max=) string is between min and max included.
日期檢查
@Past 驗(yàn)證 Date 和 Calendar 對(duì)象是否在當(dāng)前時(shí)間之前
@Future 驗(yàn)證 Date 和 Calendar 對(duì)象是否在當(dāng)前時(shí)間之后
@Pattern 驗(yàn)證 String 對(duì)象是否符合正則表達(dá)式的規(guī)則
.......等等
除此以外沦零,我們還可以自定義一些數(shù)據(jù)校驗(yàn)規(guī)則
3.4 多環(huán)境切換
? profile是Spring對(duì)不同環(huán)境提供不同配置功能的支持餐曼,可以通過激活不同的環(huán)境版本默辨,實(shí)現(xiàn)快速切換環(huán)境德频。
配置文件
我們?cè)谥髋渲梦募帉懙臅r(shí)候,文件名可以是application-{profile}.properties/tml
缩幸,用來指定多個(gè)環(huán)境版本壹置;
例如:
application-test.properties:測(cè)試環(huán)境配置
application-dev.properties:開發(fā)環(huán)境配置
但是Springboot并不會(huì)直接啟動(dòng)這些配置文件,它默認(rèn)使用application.properties
主配置文件表谊;
因此钞护,我們需要通過一個(gè)配置來選擇需要激活的環(huán)境:
spring.profiles.active=dev
yaml的多文檔塊
? 和properties配置文件一樣,但是使用yml就不需要?jiǎng)?chuàng)建多個(gè)配置文件爆办。
server:
port: 8081
#選擇要激活那個(gè)環(huán)境塊
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev #配置環(huán)境的名稱
---
server:
port: 8084
spring:
profiles: prod #配置環(huán)境的名稱
注意:
? 如果yml和properties同時(shí)配置了端口难咕,默認(rèn)會(huì)使用properties配置文件
!
配置文件加載位置
? 外部加載配置文件的方式很多距辆,我們選擇最常用的即可余佃,在開發(fā)的資源文件中配置!
官方外部配置文件說明參考文檔:
優(yōu)先級(jí)向上以此增加跨算!高優(yōu)先級(jí)覆蓋低優(yōu)先級(jí)的配置爆土,并且SpringBoot會(huì)全部加載,互補(bǔ)配置
诸蚕。
拓展步势,運(yùn)維小技巧
指定位置加載配置文件:
spring.config.location
(改變默認(rèn)的配置文件位置)
項(xiàng)目打包好后氧猬,我們可以使用命令行參數(shù)的形式,啟動(dòng)項(xiàng)目的時(shí)候來指定配置文件的新位置(相同配置立润,外部指定的配置文件優(yōu)先級(jí)最高)
java -jar spring-boot-config.jar --spring.config.location=F:/application.properties