Java增加自定义注解校验入参

本文介绍了如何在Java中使用自定义注解进行入参校验,以避免接口因无条件查询导致的问题。通过创建注解类和Aspect切面处理类,确保至少有一个参数不为空,时间参数间不超过30天。详细阐述了注解和切面的工作原理,以及在Controller中的使用方法。
摘要由CSDN通过智能技术生成

也许这是个很基础的命题,之前只是看到可以这样操作,并没有自己操作过,也并不理解每一步的意义,这次有机会实操一下,还是决定记录下来。

背景

客户使用我们系统的时候,查询不带任何查询条件,查询就返回全部数据,500多万条数据啊,然后直接导出,数据量庞大,接口超时,这可苦了我们这些开发人员,一边优化一边挨喷。这么多数据就算导成功了,Excel也打不开呀。迫不得已,决定强制让客户至少传入一个参数进行查询来缓解服务器以及开发人员的压力

首先想到的,最简单的,就是增加一个静态方法,在每个方法入口调一下,来校验以及抛出错误。但是转念一想,更优美的解决方案是在调用的方法上加一个注解,使用注解来完成这个功能,这岂不是很棒。

再一句话说下需求:

增加注解对入参进行校验,保证至少有一个参数不为空,若是有时间参数,则起始时间和结束时间之间的距离不能超过30天。

接下来,Show Time

注解类:

这里有三个参数,分别是三个参数名称,起始时间参数名称结束时间参数名称需要校验的参数名称

@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface VerifyParameters {
    /**
     * 起始时间参数名称
     */
    String startTimeParamName() default "startTime";
    /**
     * 结束时间参数名称
     */
    String endTimeParamName() default "endTime";

    /**
     * 需要校验的参数名称
     */
    String paramName() default "";
}
复制代码

注解的Aspect类

这里贴一个完整的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值