1. 程式人生 > >SpringBoot中如何使用攔截器(過濾器)?

SpringBoot中如何使用攔截器(過濾器)?

專案開發中經常要用到攔截器(過濾器)來處理一些全域性事件邏輯,之前在springt專案中寫了個ip攔截器,用於限定介面的訪問頻率,現在把邏輯轉移到SpringBoot中,其實基本一樣,只是把攔截器在xml中的配置轉移到了註解。

自定義攔截器並完成其邏輯

@Component
public class AccessLimitInterceptor extends HandlerInterceptorAdapter {

    private static Logger log = LoggerFactory.getLogger(AccessLimitInterceptor.class);

    /*  實現preHandle方法,攔截每次請求之前的動作,返回true表示進入下一個過濾器(如果有下一個)*/
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("攔截器
被呼叫"); //省略具體的邏輯 return true; } }

新建配置類,把自定義的攔截器加入配置,要實現WebMvcConfigurer介面或繼承WebMvcConfigurerAdapter類。

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private AccessLimitInterceptor accessLimitInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(accessLimitInterceptor);
    }
}
這裡要注意的是,原來常常使用的WebMvcConfigurerAdapter類官網已經不再推薦使用(Spring5.0及SpringBoot2.0以後),原始碼裡面已用@Deprecated標識,我這裡直接實現WebMvcConfigurer介面,把自定義攔截器顯式新增進配置即可,如上就可以順利使攔截器生效了。