除了@Validated @Valid还有哪些参数校验方发
时间: 2023-10-31 20:30:36 浏览: 103
除了 `@Validated` 和 `@Valid`,在 Spring 中还可以使用以下参数校验注解:
1. `@NotNull`:验证对象是否为 null,但不验证空字符串。
2. `@NotEmpty`:验证字符串、集合、数组是否不为空,但不验证 null。
3. `@NotBlank`:验证字符串是否不为空,同时也不接受只包含空格的字符串。
4. `@Size(min=, max=)`:验证字符串、集合、数组长度是否在指定范围内。
5. `@Digits(integer=, fraction=)`:验证数字是否符合指定的整数位数和小数位数要求。
6. `@Email`:验证是否为合法的电子邮件地址。
7. `@Pattern(regexp=)`:验证是否符合指定的正则表达式。
这些注解可以单独使用,也可以和 `@Valid` 或 `@Validated` 组合使用。同时,也可以自定义参数校验注解,通过实现 `ConstraintValidator` 接口来实现验证逻辑。
相关问题
@validated可以校验哪些_@Validated与@Valid
`@Validated` 和 `@Valid` 都是用于校验数据的注解,但是它们的使用场景和校验规则略有不同。
`@Validated` 是 Spring 提供的校验注解,它可以用于方法、构造函数、类以及接口上。它的作用是告诉 Spring 在执行方法或构造函数时需要进行数据校验,校验规则是通过在方法参数上添加校验注解来实现的。`@Validated` 支持分组校验和级联校验。
`@Valid` 则是 Java 标准库中的校验注解,它只能用于方法参数、字段、方法返回值等元素上。它的作用是告诉 Java 校验框架对该元素进行数据校验,校验规则是通过在该元素上添加校验注解来实现的。`@Valid` 没有分组校验和级联校验的功能。
`@Validated` 支持的校验注解有:
- `@NotNull`:验证对象不为 null,无法查检长度为 0 的字符串
- `@NotEmpty`:验证对象不为 null,长度不为 0
- `@NotBlank`:验证对象不为 null,去除首位空格后,长度不为 0
等等。
而 `@Valid` 支持的校验注解有:
- `@NotNull`:验证对象不为 null,无法查检长度为 0 的字符串
- `@AssertTrue`:验证 Boolean 对象是否为 true
- `@Size`:验证对象(Array, Collection, Map, String)长度是否在指定范围内
- `@Min`:验证 Number 和 String 对象是否大等于指定的值
- `@Max`:验证 Number 和 String 对象是否小等于指定的值
等等。
@Validated和@Valid
@Validated和@Valid是用来校验接收参数的注解。它们的作用都是对方法和参数进行校验,但有一些区别。@Valid是使用Hibernate validation时使用的注解,而@Validated是用于Spring Validator校验机制时使用的注解。
具体来说,@Validated可以用在类型、方法和方法参数上,但不能用在成员属性上,也不支持嵌套检测。而@Valid可以用在方法、构造函数、方法参数和成员属性上,并支持嵌套检测。
需要注意的是,在使用Spring Boot时,如果要使用@Valid注解,需要引入相应的POM依赖。例如,可以在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
```
另外,Spring还提供了MethodValidationPostProcessor类,可以通过setValidatedAnnotationType方法来替换默认的@Validated注解。
总结来说,@Validated和@Valid都是用于参数校验的注解,但@Validated适用于Spring Validator校验机制,而@Valid适用于Hibernate validation。它们的主要区别在于@Validated可以用于类型、方法和方法参数上,而@Valid可以用于方法、构造函数、方法参数和成员属性上,并支持嵌套检测。
阅读全文