范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

SpringValidation用法和使用细节

  对于aip ,参数校验可能是必须的, 比如前端的一些弱类型参数 , 需要我们必须进行检验.
  Spring基于JSR303规范, 实现了一套体系
  具体的使用可以参考这篇文章 https://blog.csdn.net/lzy_168/article/details/81099699 , 我觉得写得比较全. 但是不一定有我细节. 简单 校验
  最简单的就是 , 需要注意在类中需要加入 @Validated 关键字开启校验. 对于Length字段校验才有效. @Validated @RestController @SpringBootApplication public class SpringValidateApplication {      public static void main(String[] args) {         SpringApplication.run(SpringValidateApplication.class, args);     }       @GetMapping(path = "/echo")     public String echo(@Length(min = 5,max = 10,message = "msg长度5-10位") @RequestParam("name") String msg) {         return "hello "+msg;     } }嵌套 校验@ToString @Setter @Getter public class User {     @NotBlank     String id;     String name;      // 加上@Valid可以实现嵌套校验Auth. 不加不会去校验的.     @Valid     @NotNull     Auth auth;      @Getter     @Setter     static class Auth {         @Length(min = 4, max = 4)         String type;     } }
  调用 , 因此只能使用一些 , 比如RequestBody场景可以反序列. 因为普通的 x-www-form-urlencoded   是无法拿到子对象的.@PostMapping(path = "/user/add") public User userAdd(@Validated @RequestBody User name) {     return name; }分组情况 校验
  我们更新操作的时候要求, 我们的id字段不能为空.
  此时可以先定义一个接口. public interface Update { }
  然后字段分组 @ToString @Setter @Getter public class User {      /**      * 更新操作不能为空      */     @NotBlank(groups = {Update.class})     String id;      // name字段不能为空都.     @NotBlank     String name; }
  最后 @PostMapping(path = "/user/update") public User updateUser(@Validated(value = {Update.class}) @RequestBody User name) {     return name; }注意事项
  比如此时的需求改了, 我们同时还要校验, 姓名长度在 6-12位之间,通用的属性都是 public class User {     /**      * 更新操作不能为空      */     @NotBlank(groups = {Update.class})     String id;      /**      * 所有操作都是 长度在 6-12位之间.注意必须配合NotBlank或者Null使用,不然无效.不传入不会监测      */     @NotBlank     @Length(min = 6, max = 12, message = "用户名长度在6-12位之间")     String name; }
  此时我们启动在申请一次 , 比如申请如下, 发现也能通过, 那是为什么 Length校验失效呢. 此时我们发现了问题 { "id":"1", "name":"tom"     }
  如何解决呢, 需要修改这个, 因为默认group在 default组下 . 所以我们Update组不在里面所以不执行. public interface Update extends Default { }
  此时再次申请, 发现走了校验. 自定义校验@Documented @Constraint(validatedBy = PhoneNumberValidator.class) @Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface PhoneNumber {     String message() default "Invalid phone number";     // 组还是很有用的. 必要事件使用     Class[] groups() default {};     Class[] payload() default {}; }
  实现接口 ConstraintValidator   拓展具体实现.public class PhoneNumberValidator implements ConstraintValidator {      @Override     public boolean isValid(String phoneField, ConstraintValidatorContext context) {         if (phoneField == null) return true; // can be null         return phoneField != null && phoneField.matches("[0-9]+")                 && (phoneField.length() > 8) && (phoneField.length() < 14);     } }

华为P40Pro5G重新上架官方商城?售价5988元,还值得买吗?4月7日消息,华为商城重新上架了华为P40Pro8GB128GB版本,提供亮黑冰霜银零度白深海蓝晨曦金五款配色,目前官方售价5988元,与当初发布相同。目前的华为手机,能有5G功能曝旗舰功能加特小米12Ultra,小米11低价史无前例,堪称白菜机曝光配置信息基本相当齐全小米12Ultra超大杯版同样会配备LPDDR5运存和UFS3。1闪存,曝光配置信息基本相当齐全小米12Ultra超大杯版加上了最大512GB的存储,曝光配继华为之后,又一国产手机叫板苹果,结果网友的点评意外火了自从苹果手机进入中国市场,给中国的手机市场带来了不小的冲击。在北上广等一线城市,有一部苹果手机苹果电脑似乎成了标配,而在其他城市,苹果手机更成为了大家羡慕的电子产品。苹果手机在中国12512G卖7488,鸿蒙系统200倍变焦,华为P50Pro值这个价吗?现如今国内智能手机市场中,几乎所有的国产手机品牌都在进军高端手机市场,而这些机型除了硬件配置比较高以外价格方面也比较凸出。而要说价格最贵的国产手机品牌那还得是华为手机。华为因受到禁华为WatchGT3Pro曝光拥有钛合金版搭载鸿蒙系统近日消息,华为新款智能手表WatchGT3Pro的包装盒被数码博主曝光,根据包装盒来看,WatchGT3Pro整体白色的设计看上去更加干净,白色的表圈搭配金色的中框以及金色的按键看华为的强大源于毛泽东思想指导现在流行这么一句话在中国有两个公司,一个是华为,另一个就是其他。可想而知,华为在中国企业中的地位。大家都知道,华为是一个真正的高科技公司,是中国最伟大的公司之一,是一个非常有活力,vivoXNote开始预售,7英寸高端旗舰,大尺寸机型卷土重来?现在智能手机的屏幕尺寸基本都在六英寸到七英寸之间,但基本上没有达到七英寸的机型。很多手机厂商甚至都在努力把手机尺寸做得小一点,也推出了多款小屏旗舰。毕竟小屏手机更有利于单手操作,而安卓手机的福利免费使用微信双开微信已经在不知不觉影响到我们日常生活中的每一个地方,工作交流,亲情交流,朋友聚合,相信大家为了能够把工作和日常生活区分开,都注册了两个微信账号来进行区分。但是,微信又只能在一部手机苹果手机14pro系列两点值得购买距离苹果14系类还有5个多月了,很多人也是摩拳擦掌了,希望很快得到他们心心相念的14系类手机,小编今天想说的就是苹果的高端手机的系类,苹果手机14pro系列有两点值得我们购买。1。miui13稳定版第三批更新的手机出炉,2020年手机为主?miui13稳定版第三批可以更新的手机名单出炉,其实覆盖很广了?小米10青春版RedmiNote9ProRedmiNote94GRedmiK30RedmiK305GRedmiK30256GB1亿像素,从1999元降至1299元,这款落伍手机值得买随着手机市场的急剧变革,市面上的手机产品也出现了越来越多的分级,纵览整个手机市场不难发现,虽然价格高的旗舰手机拥有更好的硬件配置,但是它的销量却远远没有热门的千元机高。RedmiN
三星发布三款A系列新机屏幕和防水效果是最大亮点2022年3月17日晚上1000,三星召开了A系列的手机发布会。在这场发布会当中三星一共给广大消费者带来了三款机型分别是三星A33三星A53和三星A73。这三款手机给小芳的第一印象iPhoneSE3和K50系列谁更香?看看预定量就清楚了什么样的产品才是好产品,简单来说就是均衡,不能做得太极端,但是本月9号苹果发布的iPhoneSE3,就走了一次极端,这款产品虽然给了大家A15芯片,而且支持了5G网络,但是其他方面骁龙780g处理器是什么级别?骁龙780g处理器参数及跑分评测分析骁龙780g处理器是什么级别的一款处理器呢,小伙伴们肯定很好奇这个问题,下面球球带大家来看看这款处理器的级别,希望对大家有所帮助。骁龙780g处理器级别骁龙780G在CPU方面,45G订单数量再次更新,爱立信91个,诺基亚70个,那华为呢?老是纠结这个订单数量实际上是没有意义的,要看每个订单的数量是多少才有意义!就好比瑞典这样的小国,它的一个5g订单的数量还不及深圳的一个小区,其总订单数量还不到深圳一个区,像这样的订俄乌局势扒下霸权遮羞布,美国衰落后,国际秩序将发生怎样改变?俄乌战争硕果,查出化武验室。得到铁证文件,联合国紧急会,美国不认事实。铁证公布世界,全球眼睛雪亮。日后横行霸道,道路曲折不通。一手遮天世界,独演假戏不成。一个地球,共建共享共赢,平Windows11问题如何解决最常见的问题如果你遇到了Windows11的问题,那么我们可以帮助你,因为在这个页面上,你可以找到最常见的Windows11问题的修复方法。由于Windows11在10月初推出后仍处于早期阶段vivo新机矩阵分析,强悍到没有朋友2022年开年iQOO9系列正式发布,随后vivo系列的品牌像隐身了一样。江湖到处传说这蓝厂的机型很多,每一款都很重磅。但是官方却一点动静都没有,当小米OPPO荣耀Redmi都动了投影怎么选极米H3S与坚果J10S两款爆品横评对比,细节决定成败随着智能家居的尝试者越来越多,家用智能投影仪也成为越来越多年轻人讨论的话题。小小的方形盒子里承载着太多高科技和新奇技术,无论是热爱大屏观影体验的居家影音爱好者,还是渴望沉浸式互动的iOS15。4正式版,真香当大家还在为2022年3月9日苹果公司春季发布会上没有新的iOS系统发布而抱憾的时候,iOS15。4正式版(19E241)它真的来了。一大波实用功能如约而至!接下来就跟随作者探究一联想ThinkBook14发布2。8K屏支持180开合3月18日,联想发布了ThinkBook14,轻量化的机身设计,厚度仅为15。9mm,同时性能方面全面提升,首发价6099元起。联想ThinkBook14最高搭载90Hz刷新率屏幕也来谈谈砍一刀的拼多多随着3G4G5G和智能手机的普及应用,手机购物软件越来越成为大众的必需,淘宝京东迅速发展,当然发展最为迅速的还要数今天的话题中心拼多多。(图片源于网络)拼多多的发展可谓神速A。20