(1)拦截器中的方法将按 preHandle -> Controller -> postHandle -> afterCompletion 的顺序执行,注意: 只有 preHandle 方法返回 true,postHandle、afterCompletion 才有可能被执行; 如果 preHandle 方法返回 false,则该拦截器的 postHandle、afterCompletion 必然不会被执行。 (2)当拦截器链内存在多个拦截器时: 其中 preHandle 方法返回 true 的拦截器的 afterCompletion 会执行。 只有所有拦截器的 preHandle 方法都返回 true,postHandle 才会执行。
1、接口安全性校验注解 和接口幂等性校验注解
package com.example.demo.config;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 接口安全性校验注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CheckSecurity {
}
package com.example.demo.config;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 接口幂等性校验注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Idempotent {
}
aop拦截器
package com.example.demo.config;
import org.apache.commons.lang3.StringUt