【spring boot】FilterRegistrationBean介紹
阿新 • • 發佈:2021-08-11
原文地址:https://www.cnblogs.com/lodor/p/7568765.html
前言
以往的javaee配置過濾器是在web.xml中配置的,如下程式碼
<filter> <filter-name>TestFilter</filter-name> <filter-class>com.cppba.filter.TestFilter</filter-class> </filter> <filter-mapping> <filter-name>TestFilter</filter-name> <url-pattern>/*</url-pattern> <init-param> <param-name>paramName</param-name> <param-value>paramValue</param-value> </init-param> </filter-mapping>
而spring boot 是沒有這個配置的,怎麼辦?
解決辦法
定義一個自定義的過濾器,類似原來的模式
package com.cppba.filter; import javax.servlet.*; import java.io.IOException; public class TestFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("TestFilter"); } @Override public void destroy() { } }
主程式啟動檔案,增加
@Bean public FilterRegistrationBean testFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new TestFilter()); registration.addUrlPatterns("/*"); registration.addInitParameter("paramName", "paramValue"); registration.setName("testFilter"); registration.setOrder(1); return registration; }
總結:
Spring Boot針對Servlet、Filter等,有幾種註冊方法
- 使用
@WebFilter
、@WebServlet
、@WebListener
註解來標識類 - 使用
FilterRegistrationBean
、ServletRegistrationBean
來對Filter
、Servlet
進行自定義註冊 - 使用
@Bean
來自動新增,新增後預設的過濾路徑為/*