为了对指定方法进行权限验证等操作,很多时候我们要采用aop或者interceptor的方式,一直对自定义注解+interceptor的拦截方式不是特别了解,今天入了一下门。
1、首先自定义一个注解,@Target(ElementType.METHOD)表示这个注解只能在METHOD上使用,@Retention(RetentionPolicy.RUNTIME) 表示运行时生效,剩下那个没啥用
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ParamCheck {
}
2、那么,怎么完成这个注解的具体逻辑呢。这里建议使用HandlerInterceptorAdapter来实现interceptor,因为如果使用坑爹的HandlerInterceptor的话,三个方法你都得显示的Overwrite一下
@Slf4j
public class ParamInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 1、Class.isAssignableFrom()作用与instanceof相似,
// 前者是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口