Spring Boot配置過濾器的2種方式示例
前言
過濾器(Filter)是Servlet中常用的技術(shù),可以實現(xiàn)用戶在訪問某個目標資源之前,對訪問的請求和響應(yīng)進行攔截,常用的場景有登錄校驗、權(quán)限控制、敏感詞過濾等,下面介紹下Spring Boot配置過濾器的兩種方式。
一、@WebFilter注解方式
使用@WebFilter注解為聲明當(dāng)前類為filter,第一個參數(shù)為該filter起一個名字,第二個參數(shù)為說明要攔截的請求地址,當(dāng)前類需要實現(xiàn)Filter接口,里面有三個方法,分別為過濾器初始化、過濾方法和過濾器銷毀。
@Slf4j @WebFilter(filterName = "myFilter1", urlPatterns = "/*") public class MyFilter1 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info(filterConfig.getFilterName() + " init"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { log.info("myFilter1 begin"); try { log.info("業(yè)務(wù)方法執(zhí)行"); chain.doFilter(request, response); } catch (Exception e) { log.error("error!", e); } log.info("myFilter1 end"); } @Override public void destroy() { } }
啟動類添加@ServletComponentScan注解,@ServletComponentScan注解所掃描的包路徑必須包含該Filter,代碼如下:
@SpringBootApplication @ServletComponentScan(basePackages = "com.example.demo.filter") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
二、@Bean注解方式
新建MyFilter2.java類,不要加注解@WebFilter,代碼如下:
@Slf4j public class MyFilter2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { log.info(filterConfig.getFilterName() + " init"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { log.info("myFilter2 begin"); try { log.info("業(yè)務(wù)方法執(zhí)行"); chain.doFilter(request, response); } catch (Exception e) { log.error("error!", e); } log.info("myFilter2 end"); } @Override public void destroy() { } }
新建配置類WebConfig.java,配置bean,代碼如下:
@Configuration public class WebConfig { @Bean public FilterRegistrationBean testFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter2()); registration.addUrlPatterns("/test"); // registration.setName("myFilter2"); return registration; } }
三、查看運行效果
項目啟動后瀏覽器訪問http://localhost:8080/test,可以看到過濾器已生效,后臺打印日志如下:
[nio-8080-exec-1] com.example.demo.filter.MyFilter1 : myFilter1 begin
[nio-8080-exec-1] com.example.demo.filter.MyFilter1 : 業(yè)務(wù)方法執(zhí)行
[nio-8080-exec-1] com.example.demo.filter.MyFilter1 : myFilter1 end
到此Spring Boot配置過濾器的兩種方式已經(jīng)全部實現(xiàn),有問題歡迎留言溝通哦!
完整源碼地址: https://github.com/suisui2019/springboot-study
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
SpringBoot居然有44種應(yīng)用啟動器,你都知道嗎
很多人都不知道SpringBoot應(yīng)用啟動器竟然有44個,本文就一起來介紹一下,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-01-01MAC?在類路徑或引導(dǎo)類路徑中找不到程序包?java.lang問題
這篇文章主要介紹了MAC?在類路徑或引導(dǎo)類路徑中找不到程序包?java.lang問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11