Spring Boot/Controller/共通処理/Interceptor

Spring Boot/Controller/共通処理/Interceptor

Controller に対するインターセプターを書くことで共通処理が入れられる。

インターセプターを作る

HandlerInterceptor というインターフェースを実装する

public class HogeInterceptor implements HandlerInterceptor{
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println(request.getRequestURI());
 
        //return true;
        return false;
    }
}

この preHandle というメソッドは Controller のメソッド開始前に動作させたいモノを入れる。 ここで true を返すと Controller に処理が渡って継続される。false を返すとここで処理が中段されて response が返る。 ここではなんの指定もしてないので真っ白な何かが返る予定。

Controller 全体に適用させる

こういう風に書くと全体のリクエストに対して適用される。

@SpringBootApplication
public class UnkoApplication {
    public static void main(String[] args) {
        SpringApplication.run(UnkoApplication.class, args);
    }    
    @Bean
    public MappedInterceptor interceptor() {
        return new MappedInterceptor(new String[]{"/**"}, hogeInterceptor());
    }
    @Bean
    public HogeInterceptor hogeInterceptor() {
        return new HogeInterceptor();
    }
}

静的なファイルへのリクエストを外したいとするならば

return new MappedInterceptor(
    new String[]{"/**"},
    new String[]{"/css/**", "/js/**"},
    hogeInterceptor());
java/spring/spring_boot/controller/common_proc/interceptor/start.txt · 最終更新: 2019-06-25 20:24 by ore