在spring boot 配置servlet filter 邏輯上與配置spring 是同樣的。 不過相比spring 更加簡化配置的難度。 這裏只須要兩步java
1 建立一個自定義顧慮器並繼承spring filter 例如OncePerRequestFilterweb
public class AuthenticationFilter extends OncePerRequestFilter{ private final Logger logger=LoggerFactory.getLogger(this.getClass()); @Override protected void doFilterInternal(HttpServletRequest req, HttpServletResponse resp, FilterChain chain) throws ServletException, IOException { //code for filtering chain.doFilter(req, resp); } }
注: 這裏我使用的是OncePerRequestFilter,目的是爲了保證每次request 只觸發一次filterspring
2 在spring boot配置filter。 至關於在web.xml 配置<filter></filter> 和filter mapping url patternapi
@Configuration public class StarsFilterConfiguration { /*FilterRegistrationBean 用來配置urlpattern 來肯定哪些路徑觸發filter */ @Bean public 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(); } }