spring boot 深入多层实体参数参数进一步校验

【spring】参数校验Validation 在实际开发中,我们无法保证客户端传来的请求都是合法的。比如一些要求必传的参数没有传递,传来的参数长度不符合要求等,这种时候如果放任不管,继续执行后续业务逻辑,很有可能就会出现意想不到的bug。有人可能会说,这不是前端的问题吗,让前端校验去。话是这么说,但我们也不能前端校验百分百不会出现问题。并且有些请求可能也不是正规通过客户端发来的,可能是黑客恶意攻击,又或是通过Postman等发来的,这些请求就不一定会“合法”了。因此,对客户端传来的每个请求都进行必要的参数校验是十分重要的。 阅读详情

例子

   String tipMessage = EnforcementValid.getInstance().enforcement(item, ParamValidatedGroup.Add.class);
                if(StringUtilsPlus.isNotBlank(tipMessage)){
                    throw new BaseException(tipMessage);
                }
/**
 * 校验数据
 **/
public class EnforcementValid {
    private volatile static EnforcementValid instance;
    
    public static EnforcementValid getInstance() {
        if (instance == null) {
            synchronized (EnforcementValid.class) {
                if (instance == null) {
                    instance = new EnforcementValid();
                }
            }
        }
        return instance;
    }
    
    public <T> String  enforcement(T t,Class<?> group){
        Validator validator = SpringHoldUtil.getBean(Validator.class);
        Set<ConstraintViolation<T>> violations = null;
        if(group == null){
            violations =  validator.validate(t);
        }else{
            violations =  validator.validate(t,group);
        }
        
        for (ConstraintViolation<T> violation : violations) {
            return  violation.getMessage();
        }
        
        return null;
    }
    
    public <T> String  enforcement(T t){
        return enforcement(t,null);
    }
}

/**
 * @author derek
 * @className ParamValidatedGroup
 * @date 2022/05/13 16:24
 **/
public class ParamValidatedGroup {

    /**
     * 参数校验分组:分页
     */
    public @interface Page {

    }

    /**
     * 参数校验分组:列表
     */
    public @interface List {

    }


    /**
     * 参数校验分组:增加
     */
    public @interface Add {

    }

    /**
     * 参数校验分组:编辑
     */
    public @interface Edit {

    }

    /**
     * 参数校验分组:更新信息
     */
    public @interface UpdateInfo {

    }

    /**
     * 参数校验分组:删除
     */
    public @interface Delete {

    }

    /**
     * 参数校验分组:导入
     */
    public @interface ImportExcel {

    }

    /**
     * 查找
     */
    public @interface Find {

    }
    
    /**
     * 草稿
     */
    public @interface  Manuscript{}
    


}

Spring Boot 实现各种参数校验 业务需求总是比框架提供的这些简单校验要复杂的多,我们可以自定义校验来满足我们的需求。自定义约束注解String message() default "加密id格式错误";Class 阅读详情

相关推荐

Spring Boot 实现各种参数校验,建议收藏!

业务需求总是比框架提供的这些简单校验要复杂的多,我们可以自定义校验来满足我们的需求。自定义非常简单,假设我们自定义加密id(由数字或者a-f的字母组成,32-256自定义约束注解String message() default "加密id格式错误";Class

wjianwei666的专栏 1489

SpringBoot系列(三)解析复杂参数

SpringBoot系列(三)解析复杂参数 文章目录SpringBoot系列(三)解析复杂参数前言一、代码示例二、原理解析总结 前言 我们在编写接口时会传入复杂参数,如Map、Model等,这种类似的参数会有相应的参数解析器进行解析,并且最后会将解析出的值放到request域中,下面我们一起来探析一下其中的原理。 提示:以下是本篇文章正文内容,下面案例可供参考 一、代码示例 下面,我们通过一个demo来开始我们的探究之旅,请看下文: controller: @GetMapping(value = "/

qq_40469302的博客 1000

Spring Boot 参数校验 Validation 使用

1. 基于 Bean Validation 标准:Spring Validation 是基于 Bean Validation 标准的参数校验框架,可以实现对 Java Bean 属性和方法参数的校验,提供了一套完整的校验规范和 API,可以很方便地进行扩展和定制。 2. 支持多种校验注解:Spring Validation 支持多种校验注解,比如 @NotNull、@Size、@Min、@Max 等,可以满足不同的校验需求,同时也支持自定义校验注解。 3. 集成方便:Spring Validation 是

ITKidKid的博客 1626

spring的controller层参数合法性校验,多层实体类情况

一、对于只有一层的实体类,直接使用@Validated注解就行。①controller层。

goxingman的博客 1255

Palantir解密:从企业数字化能力构成说起,“本体”如何破解现代企业数据应用难题?

抛开技术外壳来看,Palantir“本体”的理念内核其实并不复杂:构建一个统一、可操作的数字现实,以高效驱动决策与行动。其技术实施和产品沉淀的过程诚然是高复杂性、高难度的,但这正体现了Palantir所代表的新硅谷“All in AI+”的战略决心。对于我们而言,必须深刻认识到:企业数字化能力建设既不是高精尖技术的简单堆砌,也不是局部场景的数字化改良,而是一场企业级的“数字孪生”——关乎战略、组织与业务全域的体系能力的重塑。

SZSDQJC的博客 1685

AArch64 ARM64 寄存器介绍

除了上述通用寄存器,还有FPSR(浮点状态寄存器)和 FPCR(浮点控制寄存器)等。X29寄存器和X30寄存器在函数调用和堆栈帧的管理中扮演着关键角色。AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。EL0、EL1、EL2和EL3是AArch64架构中定义的四个特权级别(Exception Levels),用于支持不同的执行环境和特权级别。

lml435035844的博客 1万+

Springboot Controller多实体接收参数之HandlerMethodArgumentResolver应用与扩展

Spring web controller多参数映射之HandlerMethodArgumentResolver

万物皆字节 4373

Zemax光机热集成分析:从FEA数据导入到光学性能评估实战

在精密光学系统设计中,环境温度变化和机械应力是导致像质恶化的关键因素,这涉及到光、机、热多物理场的耦合分析。其核心原理在于,通过有限元分析(FEA)软件(如ANSYS)模拟热与力学载荷下的结构变形和温度分布,并将这些物理场数据精准映射到光学设计软件(如Zemax)中,以评估其对调制传递函数(MTF)、点列图等核心光学指标的影响。这项技术的工程价值在于,它使设计从静态的理想模型跃升至动态的工程现实,能够在设计阶段就预测并补偿环境扰动,从而显著提升光学系统在航空航天、车载镜头、高功率激光等严苛工况下的可靠性与稳

weixin_30565327的博客 355

springboot参数校验之校验List集合内的元素

springboot参数校验之校验List集合内的元素

weixin_43264955的博客 601

sdio wifi 移植

介绍 简单来说,sdio起源自sd标准,顾名思义就是sd的IO接口(interface)的意思,更具体的说明,sd本来是记忆卡的标准,但是现在也可以把SD卡拿来插上一些外围设备接口使用,这个就是就叫做sdio。 而且sdio本身是一种相当单纯的技术,通过sd的IO引脚来连接外部外围,并且通过sd的IO数据接位与外围传输数据,而且sd协会也推出很完整的sdio stack 驱动程序,使得sdio外围得开发与应用变得非常热门 这里我们要移植的是RTL8822cs的sdio WiFi 模块,将其移植到rk3

Enosji的博客 9608

从寄存器配置到G值:一份给STM32开发者的SC7A20加速度数据换算保姆级指南

本文为STM32开发者提供SC7A20三轴加速度传感器的数据换算保姆级指南,详细解析从寄存器配置到G值转换的全过程。涵盖量程选择、输出值换算原理及优化代码实现,帮助开发者快速掌握加速度数据的物理意义转换技巧,提升运动感知系统开发效率。

weixin_29172963的博客 172

基于spring validation多层对象校验

1、第一层对象定义 package com.ybw.validation.demo.vo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.Valid; import java.io.Serializable; /** * 请求参数 * * @author geoffrey * @version V1.0 * @cl

幽静净土的技术分享 7425

基于最小二乘法(LS)和最小均方误差(MMSE)算法的导频信道估计

导频信道估计在无线通信系统中起着至关重要的作用,它用于估计无线信道的特性,以便在接收端进行正确的信号解调和解码。最小二乘法(LS)和最小均方误差(MMSE)是两种常用的导频信道估计算法,它们在估计精度和计算复杂度之间取得了良好的平衡。首先,我们提取当前的导频符号,然后将接收到的信号与导频符号相乘得到接收导频信号。最小二乘法是一种经典的导频信道估计算法,它通过最小化接收信号与预测信号之间的均方误差来估计信道。下面将详细介绍基于LS和MMSE算法的导频信道估计,并提供相应的MATLAB代码实现。

pytorchCode的博客 678

Spring boot 参数校验

文章目录Spring boot 参数校验上一节 Spring boot crud 和 swagger使用源码简介基本数据类型参数校验(包括string)实体参数校验嵌套校验分组校验常用校验注解自定义校验下一节 Spring boot 异常配置 Spring boot 参数校验 上一节 Spring boot crud 和 swagger使用 Spring boot crud 和 swagger使用 源码 源码地址 springboot web模板已经自动集成了 hibernate-validator; 所

xiao/du的博客 4571

【WorkBuddy从入门到精通实战教程】使用手册 第 2 章 WorkBuddy的下载、安装、登录与更新

摘要:WorkBuddy官方下载地址为https://www.codebuddy.cn/work/,支持Mac和Windows系统,需根据设备自动匹配版本。安装时需核对发布者信息,Mac用户需拖入应用程序文件夹。登录支持微信扫码或手机号,公司电脑安装需IT授权。更新通过个人中心检查,遇到安装包损坏、登录失败或文件读写问题时,建议重新下载、检查网络/权限或联系官方支持。重要文件建议定期备份,避免直接操作原文件。(149字)

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 1813

LSTM+Transformer混合模型时间序列预测实战教学

LSTM+Transformer混合模型时间序列预测实战教学 毕业设计

8218

Spring Boot 实现接口的各种参数校验

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。下面有部分截图希望能对大家有所帮助。

2401_85112041的博客 2463

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Boot中参数校验

spring-boot-starter-validation

qq1929892209的博客 7849

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

spring boot3参数校验基本用法

在spring boot应用程序开发中对于参数校验这一块我们通常使用注解的方式来完成,本文我们介绍关于spring boot注解化参数校验的初级使用。现在有一个用户登录请求对象/***/@Data@NotBlank(message = "账号不能为空")// 用户账号@Size(min = 6, max = 18, message = "用户密码长度需在6-18位")// 密码@NotBlank(message = "验证码id不能为空")// 验证码id。

蒾酒的博客 6313

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Boot 自动参数校验

String message() default "手机号格式错误";Class<?Class<?@Overridegraph TDA[添加依赖] --> B[DTO添加校验注解]B --> C[Controller添加@Valid]C --> D[全局异常处理器]D --> E[返回错误信息]通过以上步骤,Spring Boot 会自动完成参数校验,无需手动编写校验逻辑,大幅提升开发效率。

yuren_xia的博客 1216

Spring Boot如何实现参数校验

开发过程中,参数的校验是必不可少的。前端的校验是为了用户体验,后端的校验是为了安全。试想一下,如果在controller层中没有经过任何校验的参数通过service层,dao层一路传到了数据库就可能导致严重的后果,或许查不出数据,若包含了恶意的代码,那就可能导致更严重的后果。 还记得在最初接触Hibernate时,感慨框架功能的强大,其中就有通过配置文件便可以实现自定义参数的校验,那么功能强大的Spring是不是也可以呢?答案是肯定的。 Hibernate Val...

曰业而安的博客 892

Spring Boot项目参数校验实战详解

本文介绍了Spring Boot Validation在参数校验中的应用。通过spring-boot-starter-validation可以简化校验流程,提供声明式校验、统一错误处理等功能,帮助开发者构建更健壮的系统。

土豆丝的博客 1398

Spring Boot中的参数校验

在软件开发中,通常需要对参数进行校验,比如某些参数不能为空,而且不光前端要校验,后端也要校验。那么后端在哪里校验参数?是在控制层还是service层?参数校验有多种实现方式,采用哪一种校验方式呢? 一般来说,把无业务语义的校验放在action层,用validation做校验,比如数据类型,是否为空,数据长度、格式等,有业务语义的校验放在service层。当然实际中往往并没有那么清晰,当校验足够简单时

xiaoyi52的专栏 2922

Spring Boot 参数校验

如果后端未做参数校验的话,会使未经校验的参数经过service层来到dao层直至数据库,造成十分严重的后果。

码刀攻城 1907

Spring Boot的参数校验使用方法

Spring Boot参数校验的使用方法主要包括引入依赖、使用注解进行标注、在Controller层进行校验、以及定义异常处理类来处理校验异常等步骤。以下是具体说明:引入依赖:需要引入spring-boot-starter-validation依赖,以获得参数校验的功能支持。使用注解进行标注:在需要进行校验的参数上添加相应的校验注解,如@NotNull、@Min、@Max等,来指明参数的合法性要求。

2301_76419561的博客 2700
上一篇: 服务中心相互注册RestTemplate自动录找nacos 服务实例
下一篇: Java时区国际化解决方案
狂野弘仁
博客等级 码龄8年 34粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值