ステップ:
- アノテーションクラスを書く
- HandlerInterceptorインターフェースを実装するようにインターセプターを設定し、preHandleメソッドとafterCompletionメソッドを書き直し、インターセプトの前(後)にトランザクションを処理します。
- WebMvc構成クラスにインターセプターを追加します
アノテーションクラス:
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 AccessLimit {
// 单位时间
int second();
// 最大请求次数
int maxCount();
// 是否需要登录
boolean needLogin() default true;
}
インターセプター
/**
* 在请求前处理
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// True表示不拦截、false表示拦截
return true;
}
webmvcにインターセプターを追加します
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Autowired
private AccessLimitInterceptor accessLimitInterceptor;
/**
* 添加拦截器
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(accessLimitInterceptor);
}
}