#介绍
在项目的过程中,对于参数的校验是必须的,如果参数比较少的话我们可以直接通过代码进行校验,但是数据较大时再用这个方法就比较笨重了,接下来就该我们的主角Validation闪亮登场了
####pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

实际上在这里数据校验都是调用的javax.validationspring-boot-starter-web中也包含了hibernate-validator,有兴趣的可以去翻翻文档

User.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.priv.gabriel.entity;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;


/**
* Created with Intellij IDEA.
*
* @Author: Gabriel
* @Date: 2018-10-23
* @Description:
*/
@Data
public class User {

@NotBlank(message = "name不允许为空")
@Length(min = 2,max = 10,message = "你的长度不对劲呀")
private String name;
@NotNull(message = "进入未成年人入内!")
@Min(18)
private int age;
@NotBlank(message = "拒绝黑户")
private String address;

}

接下来只需要在Controller层中使用@valid进行校验就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.priv.gabriel.controller;

import com.priv.gabriel.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

/**
* Created with Intellij IDEA.
*
* @Author: Gabriel
* @Date: 2018-10-23
* @Description:
*/
@RestController
@RequestMapping("/user")
public class UserController {

@RequestMapping("/check")
public String check(@Valid User user){
return "检测完毕!没有问题";
}
}

Rest Client工具简单检测一下
image.png
结果当然是…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{
"timestamp": "2018-10-23T09:01:45.159+0000",
"status": 400,
"error": "Bad Request",
"errors": [
{
"codes": [
"Length.user.name",
"Length.name",
"Length.java.lang.String",
"Length"
],
"arguments": [
{
"codes": ["user.name", "name"],
"arguments": null,
"defaultMessage": "name",
"code": "name"
},
10,
2
],
"defaultMessage": "你的长度不对劲呀",
"objectName": "user",
"field": "name",
"rejectedValue": "",
"bindingFailure": false,
"code": "Length"
},
{
"codes": ["Min.user.age", "Min.age", "Min.int", "Min"],
"arguments": [
{
"codes": ["user.age", "age"],
"arguments": null,
"defaultMessage": "age",
"code": "age"
},
18
],
"defaultMessage": "最小不能小于18",
"objectName": "user",
"field": "age",
"rejectedValue": 17,
"bindingFailure": false,
"code": "Min"
},
{
"codes": [
"NotBlank.user.address",
"NotBlank.address",
"NotBlank.java.lang.String",
"NotBlank"
],
"arguments": [
{
"codes": ["user.address", "address"],
"arguments": null,
"defaultMessage": "address",
"code": "address"
}
],
"defaultMessage": "拒绝黑户",
"objectName": "user",
"field": "address",
"rejectedValue": "",
"bindingFailure": false,
"code": "NotBlank"
},
{
"codes": [
"NotBlank.user.name",
"NotBlank.name",
"NotBlank.java.lang.String",
"NotBlank"
],
"arguments": [
{
"codes": ["user.name", "name"],
"arguments": null,
"defaultMessage": "name",
"code": "name"
}
],
"defaultMessage": "name不允许为空",
"objectName": "user",
"field": "name",
"rejectedValue": "",
"bindingFailure": false,
"code": "NotBlank"
}
],
"message": "Validation failed for object='user'. Error count: 4",
"path": "/user/check"
}

好了,到这里可以看到我们的设置已经生效了,关于数据校验你get到了吗?
项目下载地址