Validation 全注解+使用示例+官方文档

Validation 全注解+使用示例+官方文档(转)
原文:https://blog.csdn.net/xiaoleizhanghahaha/article/details/83833951 原作: 不死彡邪神

Validation 注解

@AssertFalse 被注解的元素必须为false
@AssertTrue 被注解的元素必须为True
@DecimalMax(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值
@DecimalMin(Value) 被注解的元素必须为一个数字,其值必须大于等于指定的最小值
@Digits(integer=, fraction=) 被注解的元素必须为一个数字,其值必须在可接受的范围内
@Future 被注解的元素必须是日期,检查给定的日期是否比现在晚.
@Max(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值,检查该值是否小于或等于约束条件中指定的最大值. 会给对应的数据库表字段添加一个 check的约束条件.
@Min BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型 验证注解的元素值大于等于@Min指定的value值
@NotNull 被注解的元素必须不为null
@Null 被注解的元素必须为null
@Past(java.util.Date/Calendar); 被注解的元素必须过去的日期,检查标注对象中的值表示的日期比当前早.
@Pattern(regex=, flag=) 被注解的元素必须符合正则表达式,检查该字符串是否能够在match指定的情况下被regex定义的正则表达式匹配.
@Size(min=, max=) 被注解的元素必须在制定的范围(数据类型:String, Collection, Map and arrays)
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.
@CreditCardNumber 对信用卡号进行一个大致的验证
@Email 被注释的元素必须是电子油箱地址
@NotEmpty 被注释的对象必须为空(数据:String,Collection,Map,arrays)
@Range(min=, max=) 被注释的元素必须在合适的范围内 (数据:BigDecimal, BigInteger, String, byte, short, int, long and 原始类型的包装类 )
@SafeHtml(whitelistType=, additionalTags=)被注解的元素检查是否标注值包含恶意的片段如
@ScriptAssert(lang=, script=, alias=) 任何类型,要使用这个约束条件,必须先要保证Java Scripting API 即JSR 223 (“Scripting for the JavaTM Platform”)的实现 在类路径当中. 如果使用的时Java 6的话,则不是问题, 如果是老版本的话, 那么需要把 JSR 223的实现添加进类路径. 这个约束条件中的表达式可以使用任何兼容JSR 223的脚本来编写. (更多信息请参考javadoc)
@URL(protocol=, host=, port=, regexp=, flags=) 被注解的对象必须是字符串,检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供 的条件
@Length(min=下限, max=上限) CharSequence子类型 验证注解的元素值长度在min和max区间内
@NotBlank CharSequence子类型 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
@FutureOrPresent
@Negative
@NegativeOrZero
@PastOrPresent
@Positive
@PositiveOrZero
@CreditCardNumber(ignoreNonDigitCharacters=)
@Currency(value=)
@DurationMax(days=, hours=, minutes=, seconds=, millis=, nanos=,inclusive=)
@DurationMin(days=, hours=, minutes=, seconds=, millis=, nanos=,inclusive=)
@EAN
@ISBN

@ValidPart Set<@ValidPart String> parts = new HashSet<>()
@MaxAllowedFuelConsumption Map<@NotNull FuelConsumption, @MaxAllowedFuelConsumption Integer> fuelConsumption = new HashMap<>();
@MinTowingCapacity(1000) private Optional<@MinTowingCapacity(1000) Integer> towingCapacity =Optional.empty();

public void extractValues(GearBox<@ExtractedValue ?> originalValue,
ValueExtractor.ValueReceiver receiver) {
receiver.value( null, originalValue.getGear() );
}
}

private Map<@NotNull Part, List<@NotNull Manufacturer>>partManufacturers =new HashMap<>();

@ValidPassengerCount
public class Car {}

@NotNull
@Valid
private Person driver;

private List<@NotNull @Valid Person> passengers = new ArrayList();

private Map<@Valid Part, List<@Valid Manufacturer>> partManufacturers= new HashMap<>();


示例:

https://blog.csdn.net/u013815546/article/details/77248003

官方文档:

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/pdf/hibernate_validator_reference.pdf

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 Spring 框架中的 @Validated 注解时,可以通过分组(groups)来对验证进行分类和组织。这种分组功能允许您根据不同的验证场景来选择性地进行验证。 以下是一个示例,演示了如何在Spring中使用 @Validated 注解和分组: ```java import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.groups.Default; // 定义分组接口 public interface Group1 { } public interface Group2 { } // 定义验证类 @Validated public class UserValidator { public void validateGroup1(@NotNull(groups = Group1.class) Integer id, @NotBlank(groups = Group1.class) String name) { // 针对 Group1 进行的验证逻辑 } public void validateGroup2(@NotBlank(groups = Group2.class) String email, @NotBlank(groups = Group2.class) String password) { // 针对 Group2 进行的验证逻辑 } public void validateDefaultGroup(@NotBlank String username) { // 针对 Default 分组进行的验证逻辑 } } ``` 在上述示例中,我们定义了两个分组接口:Group1 和 Group2。然后,在 UserValidator 类中,我们使用 `@NotNull(groups = Group1.class)` 和 `@NotBlank(groups = Group1.class)` 注解来指定在 Group1 分组中需要验证的字段。同样地,我们使用 `@NotBlank(groups = Group2.class)` 注解来指定在 Group2 分组中需要验证的字段。 接着,我们可以在业务逻辑中根据需要调用不同的验证方法,例如: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @Service @Validated public class UserService { private final UserValidator userValidator; @Autowired public UserService(UserValidator userValidator) { this.userValidator = userValidator; } public void createUser(@NotNull(groups = Group1.class) Integer id, @NotBlank(groups = Group1.class) String name) { userValidator.validateGroup1(id, name); // 创建用户的逻辑 } public void resetPassword(@NotBlank(groups = Group2.class) String email, @NotBlank(groups = Group2.class) String password) { userValidator.validateGroup2(email, password); // 重置密码的逻辑 } } ``` 在上述示例中,UserService 类使用了 @Validated 注解,用于表示该类中的方法参数需要进行验证。通过使用 `@NotNull(groups = Group1.class)` 和 `@NotBlank(groups = Group1.class)` 注解指定了在 Group1 分组中需要验证的字段。同样地,在 resetPassword 方法中,我们使用 `@NotBlank(groups = Group2.class)` 注解来指定在 Group2 分组中需要验证的字段。 这样,当调用 UserService 类中的方法时,Spring 框架会根据不同的分组进行相应的验证。 需要注意的是,默认情况下,Spring 使用 Default 分组(即没有指定任何分组)进行验证。如果没有显式地指定分组,那么使用默认分组进行验证。 希望这个示例能够帮助您理解在Spring中如何使用 @Validated 注解和分组进行验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值