在spring boot 配置servlet filter 逻辑上与配置spring 是一样的。 不过相比spring 更加简化配置的难度。 这里只需要两步


1 创建一个自定义顾虑器并继承spring filter 例如OncePerRequestFilter

publicclassAuthenticationFilterextendsOncePerRequestFilter{privatefinalLoggerlogger=LoggerFactory.getLogger(this.getClass());@OverrideprotectedvoiddoFilterInternal(HttpServletRequestreq,HttpServletResponseresp,FilterChainchain)throwsServletException,IOException{//codeforfilteringchain.doFilter(req,resp);}}

注: 这里我使用的是OncePerRequestFilter,目的是为了保证每次request 只触发一次filter


2 在spring boot配置filter。 相当于在web.xml 配置<filter></filter> 和filter mapping url pattern

@ConfigurationpublicclassStarsFilterConfiguration{/*FilterRegistrationBean用来配置urlpattern来确定哪些路径触发filter*/@BeanpublicFilterRegistrationBeansomeFilterRegistration(){FilterRegistrationBeanregistration=newFilterRegistrationBean();registration.setFilter(AuthFilter());registration.addUrlPatterns("/api/rest/*");registration.setOrder(1);returnregistration;}/*使用annotationtag来取代<bean></bean>*/@Bean()publicFilterAuthFilter(){returnnewAuthenticationFilter();}}