Springbootブロッキングとフィルタ構成(Maven)

3347 ワード

  • pomを導入する.xmlパッケージ
  • ブロッキングクラスを記述HandlerInterceptorを継承しpreHandle、postHandle、afterCompletionメソッド
  • を書き換える.
  • preHandle:ビジネスプロセッサが要求を処理する前に呼び出されます.前処理は、符号化、安全制御、権限検査などの処理を行うことができる.
  • postHandle:ビジネスプロセッサ処理要求の実行が完了した後、ビューを生成する前に実行します.後処理(サービスを呼び出して3.ModelAndViewに戻りますが、ページレンダリングは行われていません)、ModelAndViewを変更する機会があります(このブロガーはほとんど使いません).
  • afterCompletion:DispatcherServiceletが要求を完全に処理した後に呼び出され、リソースのクリーンアップなどに使用できます.処理を返します(ページがレンダリングされています).
  • 
    @Component  //  pojo spring , 
    public class TimeInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println(((HandlerMethod)handler).getBean().getClass().getName());
            System.out.println(((HandlerMethod)handler).getMethod().getName());
            System.out.println("  Pre");
            request.setAttribute("startTime",new Date().getTime());
            return true;
        }
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
            System.out.println(" post");
            System.out.println( " : " + (new Date().getTime() - (Long) request.getAttribute("startTime"))+" ");
        }
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
            System.out.println("  afterCompletion ");
            System.out.println( " : " + (new Date().getTime() - (Long) request.getAttribute("startTime"))+" ");
            System.out.println("ex is" + ex);
        }
    }
    
    

    -ここで@Componentについて説明しますが、Springによって管理されるようにwebConfigで再構成する必要があります.
    
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Autowired   // 
        private TimeInterceptor timeInterceptor;
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(timeInterceptor);
        }
    
    // 
    
        @Bean
        
        public FilterRegistrationBean characterEncodingFilterRegister(){
            FilterRegistrationBean registrationBean = new FilterRegistrationBean();
            CharacterEncodingFilter filter = new CharacterEncodingFilter("UTF-8");
            filter.setForceEncoding(true);
            registrationBean.setFilter(filter);
    
            List urls = new ArrayList<>();
            urls.add("/*");
            registrationBean.setUrlPatterns(urls);
    
            return registrationBean;
        }
    
    
    
    }
    
    
  • 以下はSpringMVCのフィルタと比較する
  •  
            encodingFilter
            org.springframework.web.filter.CharacterEncodingFilter
            
                encoding
                UTF-8
            
            
                forceEncoding
                true
            
        
        
            encodingFilter
            /*