# 第三方库作用及其应用
# commons-io
- 是一组有关 IO 操作的开源工具包,包括文件拷贝、文件删除、文件比较、文件读取、文件写入等等。
- 有很多工具类:
- StringUtils: 字符串工具类
- NumberUtils: 数字工具类
- ArrayUtils: 数组工具类
- RandomUtils: 随机数工具类
- DateUtils: 日期工具类
- StopWatch: 计时器工具类
- ClassUtils: 反射工具类
- SystemUtils: 系统工具类
- MapUtils: 集合工具类
- BeanUtils: Bean 工具类
- IOUtils: IO 工具类
- FileUtils: 文件工具类
# hutool
- Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以“甜甜的”。
- 类似 commons-io,提供了很多组件和工具类,实现特定功能。
# jakarta.validation:jakarta.validation.api
同下
# org.hibernate.validator:hibernate-validator
javax.validation.constraints
包下,定义了一系列的约束( constraint )注解。共 22 个,如下:
# 空和非空检查
- @NotBlank :只能用于字符串不为 null ,并且字符串 #trim() 以后 length 要大于 0 。
- @NotEmpty :集合对象的元素不为 0 ,即集合不为空,也可以用于字符串不为 null 。
- @NotNull :不能为 null 。
- @Null :必须为 null 。
# 数值检查
- @DecimalMax(value) :被注释的元素必须是一个数字,其值必须小于等于指定的最大值。
- @DecimalMin(value) :被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
- @Digits(integer, fraction) :被注释的元素必须是一个数字,其值必须在可接受的范围内。
- @Positive :判断正数。
- @PositiveOrZero :判断正数或 0 。
- @Max(value) :该字段的值只能小于或等于该值。
- @Min(value) :该字段的值只能大于或等于该值。
- @Negative :判断负数。
- @NegativeOrZero :判断负数或 0 。
# Boolean 值检查
- @AssertFalse :被注释的元素必须为 true 。
- @AssertTrue :被注释的元素必须为 false 。
# 长度检查
- @Size(max, min) :检查该字段的 size 是否在 min 和 max 之间,可以是字符串、数组、集合、Map 等。
# 日期检查
— @Future :被注释的元素必须是一个将来的日期。 — @FutureOrPresent :判断日期是否是将来或现在日期。 — @Past :检查该字段的日期是在过去。 — @PastOrPresent :判断日期是否是过去或现在日期。
# 其它检查
- @Email :被注释的元素必须是电子邮箱地址。
- @Pattern(value) :被注释的元素必须符合指定的正则表达式。
# Hibernate Validator 附加的约束注解
org.hibernate.validator.constraints
包下,定义了一系列的约束( constraint )注解。如下:
- @Range(min=, max=) :被注释的元素必须在合适的范围内。
- @Length(min=, max=) :被注释的字符串的大小必须在指定的范围内。
- @URL(protocol=,host=,port=,regexp=,flags=) :被注释的字符串必须是一个有效的 URL 。
- @SafeHtml :判断提交的 HTML 是否安全。例如说,不能包含 javascript 脚本等等。
# @Valid 和 @Validated
@Valid 注解,是 Bean Validation 所定义(
javax.validation
包下),可以添加在普通方法、构造方法、方法参数、方法返回、成员变量上,表示它们需要进行约束校验。@Validated 注解,是 Spring Validation 所定义(
org.springframework.validation.annotation
包下),可以添加在类、方法参数、普通方法上,表示它们需要进行约束校验。同时,@Validated 有 value 属性,支持分组校验。
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Validated {
/**
* Specify one or more validation groups to apply to the validation step
* kicked off by this annotation.
* <p>JSR-303 defines validation groups as custom annotations which an application declares
* for the sole purpose of using them as type-safe group arguments, as implemented in
* {@link org.springframework.validation.beanvalidation.SpringValidatorAdapter}.
* <p>Other {@link org.springframework.validation.SmartValidator} implementations may
* support class arguments in other ways as well.
*/
Class<?>[] value() default {};
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 两者大致有以下的区别:
名称 | Spring Validation 是否实现了声明式校验 | 是否支持嵌套校验 | 是否支持分组校验 |
---|---|---|---|
@Validated | 是 | 否 | 是 |
@Valid | 否 | 是 | 否 |
总的来说,绝大多数场景下,我们使用 @Validated 注解即可。而在有嵌套校验的场景,我们使用 @Valid 注解添加到成员属性上。
# com.github.xiaoymin:knife4j-spring-boot-starter
swagger 相关,调试接口。启动程序,然后再浏览器里我们就可以进行输入: swagger 访问地址:http://localhost:8080/doc.html#/home
打开 swagger 文档 就可以进行测试了。
# org.projectlombok:lombok
注解开发
# spring-boot-starter-web
spring web
# xml 文件解析
- dom4j
- jaxb-api
- jaxb-impl
- jaxb-core
- jaxb-runtime
- jaxb-xjc
- jaxb-jxc
# IT-test
- junit
- cargo-mavenX-plugin
# 数据库连接池工具
- druid-spring-boot-starter
# JSON Web Token
- io.jsonwebtoken.jjwt
# 配置文件解析
- org.springframework.boot:spring-boot-configuration-processor
# xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ratel</groupId>
<artifactId>java-validation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>java-validation</name>
<description>java validation action</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- spring-boot-starter-web 已经引入了 spring-boot-starter-validation,而 spring-boot-starter-validation 中也引入了 hibernate-validator 依赖,所以无需重复引入。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--在一些高版本springboot中默认并不会引入这个依赖,需要手动引入-->
<!-- <dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<scope>compile</scope>
</dependency> -->
<!-- 保证 Spring AOP 相关的依赖包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<!--lombok相关 方便开发-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!--knife4j接口文档 方便待会进行接口测试-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
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