在spring boot 配置servlet filter 邏輯上與配置spring 是一樣的。 不過相比spring 更加簡化配置的難度。 這里只需要兩步


1 創建一個自定義顧慮器并繼承spring filter 例如OncePerRequestFilter

public?class?AuthenticationFilter?extends?OncePerRequestFilter{private?final?Logger?logger=LoggerFactory.getLogger(this.getClass());@Overrideprotected?void?doFilterInternal(HttpServletRequest?req,?HttpServletResponse?resp,?FilterChain?chain)throws?ServletException,?IOException?{//code?for?filtering?chain.doFilter(req,?resp);}}

注: 這里我使用的是OncePerRequestFilter,目的是為了保證每次request 只觸發一次filter


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

@Configuration
public?class?StarsFilterConfiguration?{/*FilterRegistrationBean?用來配置urlpattern?來確定哪些路徑觸發filter?*/@Beanpublic?FilterRegistrationBean?someFilterRegistration()?{FilterRegistrationBean?registration?=?new?FilterRegistrationBean();registration.setFilter(AuthFilter());registration.addUrlPatterns("/api/rest/*");registration.setOrder(1);return?registration;}?/*使用annotation?tag來取代<bean></bean>*/	@Bean()public?Filter?AuthFilter()?{return?new?AuthenticationFilter();}
}