声明式校验上传文件大小

文件上传在不同场景下有不同的限制规则,而Spring boot提供的限制文件大小的配置是针对全局生效的,因此需要提供一种可针对每个上传接口指定不同的文件大小限制的校验方式

1. 编程式校验

在每个处理逻辑中通过org.springframework.web.multipart.MultipartFile#getSize获取上传文件的大小,进而验证其大小是否符合条件

因为实现简单,这种方式看起来也可以接受。但是同样的逻辑要在多个上传场景中使用,即便将其封装为工具类,也需要在多个地方调用,从单一职责方面考虑,这种方式欠佳。

2. 声明式校验

说到校验,就不得不提一下hibernate-validator校验框架了,使用一个注解就可以完成对请求参数的校验,而不需要手动编写额外的代码。

可惜的是我并没有找到可以校验MultipartFile类型的注解。既然叫框架,没有扩展性怎么好意思呢,于是乎我分析了下@Max注解生效的实现原理,经过与源码的友好交流,终于让我发现了ConstraintValidator这个玩意
在这里插入图片描述
它就是校验各种数据的Validator(感觉翻译成中文就少了些感觉,所以就先这样吧)的抽象,其中A就是注解,T就是要校验的数据类型

可以发现,它的实现类非常多,这些都是针对不同数据类型的Validat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值