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

张小明 2026/1/10 7:14:09
做系统和做网站哪个简单一些,中国最大的建站网站,网站开发费用构成,网站充值怎么做分录一、 为什么要用分组校验#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进行投诉反馈,一经查实,立即删除!

网站开发语言一般是用什么建设项目前期收费查询网站

TensorRT-LLM入门指南:高效推理大模型 在大语言模型(LLMs)正以前所未有的速度重塑AI应用的今天,一个现实问题摆在所有开发者面前:如何让千亿参数的庞然大物在生产环境中跑得又快又稳? 我们见过太多这样的…

张小明 2026/1/8 6:13:22 网站建设

网站公司必须帮备案网页设计基础知识点总结

目录 一、为什么需要 CNN?全连接网络的 “致命缺陷” 二、卷积层:提取图像特征的 “魔法滤镜” 1. 核心概念:卷积核、步长、填充 2. 卷积运算的本质:滑动点乘 3. 多通道卷积:提取更丰富的特征 4. PyTorch 实现卷积…

张小明 2026/1/8 6:44:21 网站建设

共享网站哪里建国外的网站叫什么

你的论文是不是AI率超高?一查降ai率结果80%以上? 别急,这种情况很多人遇到过。 用AI工具写论文确实快,但“AI味”太浓就容易翻车。 今天我就来分享几款自己用过、真心能打的ai降ai工具,从免费降ai率工具到专业级都涵…

张小明 2026/1/9 19:24:43 网站建设

建站 备案有没有做生鲜配送的网站

互联网大厂Java求职面试场景对话及技术深度解析(含代码与实战场景) 面试官V: 你好,请简单介绍下你自己及你的项目背景。 谢飞机: …(自我介绍略) 一、Java基础:集合并发与内存模型 面试官V: ArrayList和…

张小明 2026/1/8 8:01:52 网站建设

买网站模板文章分享网站模版

LabVIEW建旋转机械状态监测系统,通过多类型传感器采集振动、温度等信号,结合信号调理、数据采集硬件与 LabVIEW 软件分析功能,实现机组关键部件实时监控、故障诊断与远程数据交互,解决风电场偏远部署、恶劣环境下的设备运维难题&a…

张小明 2026/1/8 8:13:52 网站建设