spring-boot實(shí)現(xiàn)增加自定義filter(新)
前言
傳統(tǒng)的javaEE增加Filter是在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中很明顯不能這樣實(shí)現(xiàn),那怎么辦呢?看完下面的教程,答案自然知道了。
老方法(新方法請(qǐng)直接下拉)
1.創(chuàng)建自定義Filter
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() { } }
2.在ApplicationConfiguration.java中增加一個(gè)@bean
@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; }
3.啟動(dòng)項(xiàng)目
你會(huì)看到控制臺(tái)打印如下代碼:
4.訪問項(xiàng)目
最后我們?cè)L問以下http://127.0.0.1:8080/test
如果你看到控制臺(tái)打印出:TestFilter
恭喜你,配置成功!
2017-04-20 最新spring-boot增加Filter方法
首先定義一個(gè)Filter
@Order(1) //重點(diǎn) @WebFilter(filterName = "testFilter1", urlPatterns = "/*") public class TestFilterFirst 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("TestFilter1"); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
比較核心的代碼是自定義類上面加上@WebFilter,其中@Order注解表示執(zhí)行過濾順序,值越小,越先執(zhí)行
我們?cè)趕pring-boot的入口處加上注解@ServletComponentScan:
@SpringBootApplication(scanBasePackages = "com.cppba") //重點(diǎn) @ServletComponentScan public class Application { public static void main(String[] args) throws UnknownHostException { SpringApplication app = new SpringApplication(Application.class); Environment environment = app.run(args).getEnvironment(); } }
這種方法效果和上面版本一樣,但是用起來更加方便!以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java利用WatchService監(jiān)聽文件變化示例
本篇文章主要介紹了Java利用WatchService監(jiān)聽文件變化示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10【spring-boot】快速構(gòu)建spring-boot微框架的方法
本篇文章主要介紹了【spring-boot】快速構(gòu)建spring-boot微框架的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12IDEA取消SVN關(guān)聯(lián),再重新分享項(xiàng)目的操作
這篇文章主要介紹了IDEA取消SVN關(guān)聯(lián),再重新分享項(xiàng)目的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02JAVA CountDownLatch與thread-join()的區(qū)別解析
這篇文章主要介紹了JAVA CountDownLatch與thread-join()的區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08ExecutorService Callable Future多線程返回結(jié)果原理解析
這篇文章主要為大家介紹了ExecutorService Callable Future多線程返回結(jié)果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09基于SpringBoot和MongoDB實(shí)現(xiàn)實(shí)時(shí)分析和日志處理功能
實(shí)時(shí)分析和日志處理在現(xiàn)代應(yīng)用程序開發(fā)中扮演著重要的角色,MongoDB是一個(gè)非常流行的NoSQL數(shù)據(jù)庫,其高性能和靈活性使其成為實(shí)時(shí)分析和日志處理的理想選擇,本文將介紹如何使用?Spring?Boot?和?MongoDB?實(shí)現(xiàn)實(shí)時(shí)分析和日志處理的功能2023-06-06Java 實(shí)現(xiàn)多線程切換等待喚醒交替打印奇偶數(shù)
這篇文章主要介紹了Java 實(shí)現(xiàn)多線程切換等待喚醒交替打印奇偶數(shù) ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05