SpringBootでのインターセプターの実装方法は何ですか?
Spring Bootでは、インターセプターを実装する方法は2つあります。
- HandlerInterceptorインターフェースを実装する:クラスを作成し、HandlerInterceptorインターフェースを実装し、そのpreHandle、postHandle、afterCompletionメソッドを実装します。これらはそれぞれ、リクエスト処理前、リクエスト処理後、リクエスト完了後に処理を行います。最後に、設定クラスでインターセプターを登録します。
以下はサンプルコードです。
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理前进行拦截处理
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理后进行拦截处理
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求完成后进行拦截处理
}
}
Interceptorを配置クラスに登録する:
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
- HandlerInterceptorAdapterクラスを継承する: HandlerInterceptorAdapterクラスを継承したクラスを作成し、そのpreHandle、postHandle、afterCompletionメソッドをオーバーライドし、設定クラスでインターセプタを登録する。
以下はサンプルコードです。
@Component
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理前进行拦截处理
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理后进行拦截处理
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求完成后进行拦截处理
}
}
配置クラスでインターセプターを登録する際にも、addInterceptorsメソッドを使用して登録する。