做系统和做网站哪个简单一些中国最大的建站网站

张小明 2026/1/12 13:04:47
做系统和做网站哪个简单一些,中国最大的建站网站,网站开发费用构成,网站充值怎么做分录一、 为什么要用分组校验#xff1f;#xff08;痛点#xff09; 在日常开发中#xff0c;我们经常遇到同一个 DTO#xff08;数据传输对象#xff09;在不同场景下有不同校验规则的情况。 典型场景#xff1a;用户管理 新增用户#xff1a;ID 必须为空#xff08;因为…一、 为什么要用分组校验痛点在日常开发中我们经常遇到同一个 DTO数据传输对象在不同场景下有不同校验规则的情况。典型场景用户管理新增用户ID必须为空因为是自增的但Password必填。修改用户ID不能为空指定改谁但Password选填不改就不传。如果没有分组校验我们通常有两种“笨办法”定义两个 DTOUserCreateReqVO和UserUpdateReqVO。缺点类爆炸大量重复字段维护麻烦。去掉校验注解在 DTO 里不写NotNull全靠在 Service 层手写if (id null)判断。缺点代码臃肿失去了注解校验的优雅。分组校验Groups就是为了解决这个问题——用一个 DTO搞定多种场景。二、 核心步骤用法总结使用分组校验只需要三步定义分组 - 标记规则 - 触发校验。1. 定义分组接口 (The Marker)这只是一个普通的 Java 接口不需要任何方法它的唯一作用就是做一个“标签”。publicclassUserReqVO{// 定义两个分组接口publicinterfaceCreate{}publicinterfaceUpdate{}}2. 在字段上标记分组 (The Rule)在校验注解中配置groups属性。DatapublicclassUserReqVO{Schema(description用户ID)Null(groupsCreate.class,message新增时ID必须为空)NotNull(groupsUpdate.class,message修改时ID不能为空)privateLongid;Schema(description用户名)NotBlank(message用户名不能为空)// 没有指定 groups属于默认分组 (Default)privateStringusername;Schema(description密码)NotBlank(groupsCreate.class,message新增时密码不能为空)privateStringpassword;}3. 触发校验 (The Trigger)这是最关键的一步。你必须告诉 Spring当前这次请求你要检查哪个分组。注意必须使用Validated注解Valid不支持分组。RestControllerRequestMapping(/user)publicclassUserController{// 场景 A新增 - 触发 Create 分组PostMapping(/create)publicResultcreate(RequestBodyValidated(UserReqVO.Create.class)UserReqVOreq){returnsuccess(userService.create(req));}// 场景 B修改 - 触发 Update 分组PutMapping(/update)publicResultupdate(RequestBodyValidated(UserReqVO.Update.class)UserReqVOreq){returnsuccess(userService.update(req));}}三、 进阶如何处理“默认规则”坑点预警这里有一个初学者极容易踩的坑。问题在上面的例子中username字段只加了NotBlank没有加groups。当你使用Validated(Create.class)时Spring 只会检查标记了Create.class的字段username会被忽略解决方案让分组接口继承Default如果你希望在检查Create分组时也顺便检查那些没有分组的默认字段可以这样定义接口importjavax.validation.groups.Default;publicclassUserReqVO{// 让 Create 分组继承 Default 分组publicinterfaceCreateextendsDefault{}publicinterfaceUpdateextendsDefault{}}这样Validated(Create.class)就会同时检查标记了Create的规则。没有标记 group 的规则归属于Default。四、 高阶实战业务逻辑中的动态校验除了在 Controller 自动校验我们有时需要在 Service 层根据业务开关动态校验例如验证码开关。场景系统配置了“开启验证码”开关。开启时校验关闭时不校验。代码示例ServicepublicclassAuthService{ResourceprivateValidatorvalidator;// 注入 Java 标准校验器publicvoidlogin(LoginReqVOreq){// 1. 动态判断业务开关if(isCaptchaEnabled()){// 2. 手动触发特定分组 (CodeEnableGroup) 的校验SetConstraintViolationLoginReqVOerrorsvalidator.validate(req,CodeEnableGroup.class);// 3. 如果有异常手动抛出if(!errors.isEmpty()){thrownewServiceException(验证码不能为空);}}// ... 其他逻辑}}五、 总结Validation Groups (分组校验)是 Spring Boot 开发中精简代码的神器。本质给校验注解加上“条件判断”。核心通过空接口定义分组 (interface GroupA {})。使用在注解中指定groups GroupA.class。触发自动Controller 层使用Validated(GroupA.class)。手动Service 层使用validator.validate(obj, GroupA.class)。最佳实践让自定义分组继承Default接口避免漏掉通用校验规则。缺点创建与更新复用一个类高度耦合需要在Controller中指定class参数无法实现复杂的方法级别的逻辑校验。有一种平替方案可以见AssertTrue。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

opencart做视频网站资深的食品行业网站开发

基于YOLO的工业级目标检测模型部署全指南 在一条高速运转的电子产品装配线上,每分钟有上百块电路板经过质检工位。传统人工目检不仅效率低下,还容易因疲劳导致漏检——而今天,一台搭载了优化版YOLO模型的边缘计算盒子,正以每秒30…

张小明 2026/1/8 17:49:44 网站建设

建站程序asp网页图片怎么打印出来

1.效果视频:最新最全面的水稻病害检测创作(yolov8模型,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫等病害。)_哔哩哔哩_bilibili 2.数据集介绍 水稻叶病害数据集(目标检测,yolo…

张小明 2026/1/8 3:59:05 网站建设

建设企业网站的哪家好泰兴建设局网站

温馨提示:文末有资源获取方式~ 一、货运搬家系统:让货运搬家更高效、更便捷在当今快节奏的生活和商业环境中,货运搬家是人们和企业经常面临的需求。无论是个人搬家、企业搬迁,还是货物运输,都需要一个高效、便捷的解决…

张小明 2026/1/4 6:00:16 网站建设

网站字号多大怎么建立网站的步骤

2025影视AI新突破:next-scene模型实现电影级镜头语言连续性革命 【免费下载链接】next-scene-qwen-image-lora-2509 项目地址: https://ai.gitcode.com/hf_mirrors/lovis93/next-scene-qwen-image-lora-2509 导语 next-scene-qwen-image-lora-2509模型通过…

张小明 2026/1/8 10:40:23 网站建设

响应式网站开发哪家好同ip网站怎么做

文档索引与条件文本管理全解析 在文档处理过程中,索引和条件文本是非常实用的功能。索引能够帮助读者快速定位文档内容,而条件文本则允许我们在一个文档中维护多个版本。下面将详细介绍这些功能的相关知识。 索引编辑与创建 编辑索引条目 当我们对索引进行格式化后,可能需…

张小明 2026/1/4 17:07:48 网站建设

做网络竞拍的网站网站的构建是怎样的

基于Kotaemon的员工入职引导助手实现 在一家快速扩张的科技公司里,HR团队正面临一个熟悉的难题:每个月都有数十名新员工加入,但入职流程却像一场“信息马拉松”——合同签署、邮箱开通、系统权限配置、办公设备申请……每一个环节都需要反复沟…

张小明 2026/1/4 19:06:16 网站建设