欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot之過(guò)濾器 Filter注入的方式解析

 更新時(shí)間:2021年11月15日 11:49:47   作者:Jaymeng8848  
這篇文章主要介紹了Spring Boot之過(guò)濾器 Filter注入的方式解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

過(guò)濾器 Filter注入的方式

第一種

@WebFilter(filterName = "myFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
    }
    @Override
    public void destroy() {
    }
}
@SpringBootApplication
@EnableAutoConfiguration
@EnableWebMvc
@ServletComponentScan(basePackages = "com.fanyin.eghm")
public class EghmApplication {
    public static void main(String[] args) {
        SpringApplication.run(EghmApplication.class, args);
    }
}

@ServletComponentScan 所掃描的包路徑必須包含該Filter

第二種

@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new MyFilter2());
        bean.addUrlPatterns("/*");
        return bean;
    }
}

第三種

@Bean("proxyFilter")
    public Filter filter (){
        return new Filter() {
            @Override
            public void init(javax.servlet.FilterConfig filterConfig) throws ServletException {
            }
            @Override
            public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
            }
            @Override
            public void destroy() {
            }
        };
    }
    @Bean
    public DelegatingFilterProxyRegistrationBean delegatingFilterProxyRegistrationBean(){
        DelegatingFilterProxyRegistrationBean bean = new DelegatingFilterProxyRegistrationBean("proxyFilter");
        bean.addUrlPatterns("/*");
        return bean;
    }

方法四

@Bean("myFilter")
    public Filter filter (){
        return new Filter() {
            @Override
            public void init(javax.servlet.FilterConfig filterConfig) throws ServletException {
            }
            @Override
            public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
            }
            @Override
            public void destroy() {
            }
        };
    }

說(shuō)明:

第二種和第三種類似,均實(shí)現(xiàn)了AbstractFilterRegistrationBean接口,而該接口間接實(shí)現(xiàn)了ServletContextInitializer,springboot在啟動(dòng)容器后會(huì)查找實(shí)現(xiàn)該接口的bean,并調(diào)用**onStartup()**方法添加自定義的Filter,兩則的區(qū)別 DelegatingFilterProxyRegistrationBean 通過(guò)傳入的proxyFilter名字,在WebApplicationContext查找該Fillter Bean,并通過(guò)DelegatingFilterProxy生成基于該Bean的代理Filter對(duì)象,

而FilterRegistrationBean 則是直接設(shè)置一個(gè)Filter,因此該Filter可以有spring容器管理,也可不用spring管理

注意:如果Filter聲明為一個(gè)Bean,則不需要定義為FilterRegistrationBean,也會(huì)被spring發(fā)現(xiàn)并添加,就是方法四,該方式無(wú)法定義攔截規(guī)則等,默認(rèn)全局,慎用!

注入自定義Filter

直接舉個(gè)例子,我現(xiàn)在想實(shí)現(xiàn)一個(gè)Filter,過(guò)濾所有訪問(wèn)/admin前綴的請(qǐng)求

public class AdminFilter implements Filter { 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("此時(shí)有人訪問(wèn)admin");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("該人以及訪問(wèn)結(jié)束");
    }
}

這里我雖然自定義了一個(gè)Filter,但是是無(wú)法掃描到的。

有兩種方式可以解決這個(gè),一個(gè)是在啟動(dòng)類增加

@ServletComponentScan

這個(gè)注解不管是Filter還是Servlet都適用

另一種方式就是通過(guò)注入

FilterRegistrationBean

如下:

@Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new AdminFilter());
        filterRegistrationBean.addUrlPatterns("/admin/*");
        return filterRegistrationBean;
    }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)之線段樹(shù)中的懶操作詳解

    Java數(shù)據(jù)結(jié)構(gòu)之線段樹(shù)中的懶操作詳解

    對(duì)于線段樹(shù),若要求對(duì)區(qū)間中的所有點(diǎn)都進(jìn)行更新,可以引入懶操作。懶操作包括區(qū)間更新和區(qū)間查詢操作。本文將通過(guò)一個(gè)示例和大家詳細(xì)聊聊線段樹(shù)中的懶操作,需要的可以參考一下
    2022-10-10
  • Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例

    Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例

    這篇文章主要介紹了Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例,迭代器模式能夠?qū)υL問(wèn)者隱藏對(duì)象的內(nèi)部細(xì)節(jié),需要的朋友可以參考下
    2016-05-05
  • springBoot+mybaties后端多層架構(gòu)的實(shí)現(xiàn)示例

    springBoot+mybaties后端多層架構(gòu)的實(shí)現(xiàn)示例

    本文主要介紹了springBoot+mybaties后端多層架構(gòu)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • ActiveMQ簡(jiǎn)單入門(新手必看篇)

    ActiveMQ簡(jiǎn)單入門(新手必看篇)

    下面小編就為大家?guī)?lái)一篇ActiveMQ簡(jiǎn)單入門(新手必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 徹底理解Java 中的ThreadLocal

    徹底理解Java 中的ThreadLocal

    這篇文章主要介紹了徹底理解Java 中的ThreadLocal的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java對(duì)時(shí)間的簡(jiǎn)單操作實(shí)例

    Java對(duì)時(shí)間的簡(jiǎn)單操作實(shí)例

    這篇文章主要介紹了Java對(duì)時(shí)間的簡(jiǎn)單操作,實(shí)例分析了針對(duì)java.util.Date的各類常見(jiàn)操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 詳解Java如何通過(guò)Socket實(shí)現(xiàn)查詢IP

    詳解Java如何通過(guò)Socket實(shí)現(xiàn)查詢IP

    在本文中,我們來(lái)學(xué)習(xí)下如何找到連接到服務(wù)器的客戶端計(jì)算機(jī)的IP地址。我們將創(chuàng)建一個(gè)簡(jiǎn)單的客戶端-服務(wù)器場(chǎng)景,讓我們探索用于TCP/IP通信的java.net?API,感興趣的可以了解一下
    2022-10-10
  • Java程序運(yùn)行之JDK,指令javac java解讀

    Java程序運(yùn)行之JDK,指令javac java解讀

    這篇文章主要介紹了Java程序運(yùn)行之JDK,指令javac java,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring Bean管理注解方式代碼實(shí)例

    Spring Bean管理注解方式代碼實(shí)例

    這篇文章主要介紹了Spring Bean管理注解方式代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java ThreadPool線程池的使用,線程池工具類用法說(shuō)明

    java ThreadPool線程池的使用,線程池工具類用法說(shuō)明

    這篇文章主要介紹了java ThreadPool線程池的使用,線程池工具類用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10

最新評(píng)論