当前位置: 首页 > news >正文

广州网站制作联系方式网站流量

广州网站制作联系方式,网站流量,购物商城开发,长沙高端网站建设公司文章目录 一、使用二、常用注解三、Valid or Validated ?四、分组校验1. 分组校验的基本概念2. 定义验证组3. 应用分组到模型4. 在控制器中使用分组5. 总结 一、使用 要使用这些注解,首先确保在你的 Spring Boot 应用的 pom.xml 文件中添加了 spring-bo…

文章目录

  • 一、使用
  • 二、常用注解
  • 三、@Valid or @Validated ?
  • 四、分组校验
      • 1. 分组校验的基本概念
      • 2. 定义验证组
      • 3. 应用分组到模型
      • 4. 在控制器中使用分组
      • 5. 总结

一、使用

要使用这些注解,首先确保在你的 Spring Boot 应用的 pom.xml 文件中添加了 spring-boot-starter-validation 依赖。然后,你可以将这些注解应用于你的模型类字段上。在你的控制器方法中,你可以使用 @Valid@Validated 注解来触发验证,例如:

@PostMapping("/users")
public ResponseEntity<?> createUser(@Valid @RequestBody User user) {// 如果存在验证错误,会抛出异常// 正常业务逻辑
}

在这个例子中,如果 User 对象的字段不满足注解定义的验证规则,Spring 将抛出一个异常,你可以通过全局异常处理或控制器层的异常处理来处理这些异常,并向用户返回适当的响应。

二、常用注解

spring-boot-starter-validation 依赖包引入了 Java Bean Validation API(通常基于 Hibernate Validator 实现),提供了一系列注解来帮助你对 Java 对象进行验证。以下是一些常用的验证注解及其含义和使用方式:

  1. @NotNull: 确保字段不是 null

    public class User {@NotNull(message = "用户名不能为空")private String username;// 其他字段和方法
    }
    
  2. @NotEmpty: 确保字段既不是 null 也不是空(对于字符串意味着长度大于0,对于集合意味着至少包含一个元素)。

    public class User {@NotEmpty(message = "密码不能为空")private String password;// 其他字段和方法
    }
    
  3. @NotBlank: 确保字符串字段不是 null 且至少包含一个非空白字符。

    public class User {@NotBlank(message = "邮箱不能为空且不能只包含空格")private String email;// 其他字段和方法
    }
    
  4. @Size: 确保字段(字符串、集合、数组)符合指定的大小范围。

    public class User {@Size(min = 2, max = 30, message = "用户名长度必须在2到30之间")private String username;// 其他字段和方法
    }
    
  5. @Min@Max: 对数值类型字段设置最小值和最大值。

    public class User {@Min(value = 18, message = "年龄必须大于等于18")@Max(value = 100, message = "年龄必须小于等于100")private int age;// 其他字段和方法
    }
    
  6. @Email: 确保字段是有效的电子邮件地址。

    public class User {@Email(message = "无效的邮箱格式")private String email;// 其他字段和方法
    }
    
  7. @Pattern: 确保字符串字段匹配正则表达式。

    public class User {@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "用户名只能包含字母和数字")private String username;// 其他字段和方法
    }
    
  8. @Positive@PositiveOrZero: 确保数值字段是正数或者正数和零。

    public class Product {@Positive(message = "价格必须是正数")private BigDecimal price;// 其他字段和方法
    }
    

三、@Valid or @Validated ?

@Valid@Validated 注解都用于数据验证,但它们在使用和功能上有一些差异:

  1. @Valid:

    • 来源于 JSR 303/JSR 380 Bean Validation API。
    • 可以用在方法参数上,以触发对传递给该方法的对象的验证。这通常在 Spring MVC 中用于验证带有 @RequestBody@ModelAttribute 注解的参数。
    • 不支持验证组的概念,这意味着不能控制验证的顺序或验证特定的子集。

    示例:

    @PostMapping("/users")
    public ResponseEntity<?> createUser(@Valid @RequestBody User user) {// 业务逻辑
    }
    
  2. @Validated(推荐):

    • 是 Spring 的特有注解,不是 JSR 303/JSR 380 的一部分。
    • 支持验证组,允许您更灵活地指定在特定情况下应用哪些验证约束。例如,可以根据不同的操作(如创建、更新)定义不同的验证规则。
    • 可以用在类型级别(在类上)和方法参数上。在类型级别使用时,它会触发该类中所有带有验证注解的方法的验证。

    示例:

    @PostMapping("/users")
    public ResponseEntity<?> createUser(@Validated @RequestBody User user) {// 业务逻辑
    }
    

在实际使用中,如果你需要简单的验证功能,@Valid 是一个很好的选择。如果你需要更复杂的验证逻辑,比如验证组,那么 @Validated 更适合。此外,@Validated 可以应用在类级别,从而对一个类的多个方法进行验证,这在使用 Spring 服务层时非常有用。

四、分组校验

分组校验(Group Validation)是一种在 Java Bean Validation 中用于在不同上下文中应用不同验证规则的方法。这对于那些在不同情况下(例如,创建 vs 更新)需要不同验证规则的对象特别有用。

1. 分组校验的基本概念

在分组校验中,你可以定义多个接口(通常为空)来表示不同的验证组。然后,你可以在验证注解中指定这些接口,以表明该注解仅在验证特定组时应用。

例如,你可能有一个User类,其中某些字段在创建用户时是必需的,但在更新用户时可能是可选的。

2. 定义验证组

首先,定义两个空接口作为验证组:

public interface OnCreate {}
public interface OnUpdate {}

3. 应用分组到模型

然后,在你的模型类中使用这些接口作为验证注解的参数:

public class User {@NotNull(groups = OnCreate.class)private Long id;@NotBlank(groups = {OnCreate.class, OnUpdate.class})private String username;@Email(groups = {OnCreate.class, OnUpdate.class})private String email;// 其他字段和方法
}

在这个例子中,id 字段仅在创建用户时需要验证(OnCreate组),而 usernameemail 字段在创建和更新用户时都需要验证。

4. 在控制器中使用分组

最后,在你的控制器方法中,使用 @Validated 注解指定要应用的验证组:

@PostMapping("/users")
public ResponseEntity<?> createUser(@Validated(OnCreate.class) @RequestBody User user) {// 创建用户的业务逻辑
}@PutMapping("/users")
public ResponseEntity<?> updateUser(@Validated(OnUpdate.class) @RequestBody User user) {// 更新用户的业务逻辑
}

在这个例子中,createUser 方法只会验证属于 OnCreate 组的字段,而 updateUser 方法则只会验证属于 OnUpdate 组的字段。这样,你就可以根据不同的操作自定义验证逻辑了。

5. 总结

通过使用分组校验,你可以为同一个对象的不同操作设置不同的验证规则,这在复杂应用中非常有用。这种方法提高了代码的灵活性和可维护性。

在这里插入图片描述

http://www.shuangfujiaoyu.com/news/16698.html

相关文章:

  • 池州哪里做网站网站怎么优化推荐
  • 网站设计师需要学什么最新推广赚钱的app
  • 沈阳网站建设首选龙兴科技网站推广方案范例
  • 谷歌网站收录入口宁波seo优化服务
  • 免费cms建站系统有哪些免费做网站的平台
  • 网站 维护 页面南宁seo推广优化
  • 手机网站对企业用户的好处百度推广代理公司
  • 中文域名做的网站中国国家培训网
  • 广东有做阿里网站的吗站长seo工具
  • 网站开发案例教堂html人工智能培训班收费标准
  • 统计局网站建设情况网站推广计划书
  • 建什么网站好今日头条军事新闻
  • 最好的营销型网站案例免费推广引流平台
  • 个人站长做哪些网站好深圳竞价托管
  • 做网站开通手机验证功能百度最新秒收录方法2023
  • 什么类型的网站流量高全专业优化公司
  • wordpress漫画站主题seo排名查询工具
  • 日本网站制作微信朋友圈营销方案
  • 摄影网站首页设计整站多关键词优化
  • 杭州做网站哪家公司好近期国内新闻
  • 什么网站是solr做的百度开放平台
  • 免费网站一键生成怎样做品牌推广
  • 网站一条龙服务学企业管理培训班
  • 网站建设中是因为没有ftp上传吗seo视频教程我要自学网
  • 东西湖网站建设公司windows清理优化大师
  • 个人做免费的网站站长工具端口检测
  • 运城市盐湖区姚孟精诚网站开发中心超级外链工具
  • 皖icp阜阳网站建设搜索引擎有哪些好用
  • 广东网站开发需要多少钱最新军事战争新闻消息
  • wordpress一站式开发seo优化包括哪些