也许这是个很基础的命题,之前只是看到可以这样操作,并没有自己操作过,也并不理解每一步的意义,这次有机会实操一下,还是决定记录下来。
背景
客户使用我们系统的时候,查询不带任何查询条件,查询就返回全部数据,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类
这里贴一个完整的