最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot之過濾器 Filter注入的方式解析

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

過濾器 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() {
            }
        };
    }

說明:

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

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

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

注入自定義Filter

直接舉個(gè)例子,我現(xiàn)在想實(shí)現(xiàn)一個(gè)Filter,過濾所有訪問/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í)有人訪問admin");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("該人以及訪問結(jié)束");
    }
}

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

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

@ServletComponentScan

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

另一種方式就是通過注入

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詳細(xì)分析LCN框架分布式事務(wù)

    Java詳細(xì)分析LCN框架分布式事務(wù)

    這篇文章主要介紹了Java LCN框架分布式事務(wù),分布式事務(wù)是指事務(wù)的參與者、支持事務(wù)的服務(wù)器、資源服務(wù)器以及事務(wù)管理器分別位于不同的分布式系統(tǒng)的不同節(jié)點(diǎn)之上
    2022-07-07
  • swagger文檔增強(qiáng)工具knife4j使用圖文詳解

    swagger文檔增強(qiáng)工具knife4j使用圖文詳解

    這篇文章主要介紹了swagger文檔增強(qiáng)工具knife4j使用詳解,想要使用knife4j非常簡單,只要在Springboot項(xiàng)目中引入knife4j的依賴即可,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 深入淺出的學(xué)習(xí)Java ThreadLocal

    深入淺出的學(xué)習(xí)Java ThreadLocal

    本文會(huì)基于實(shí)際場(chǎng)景介紹ThreadLocal如何使用以及內(nèi)部實(shí)現(xiàn)機(jī)制。 具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java中利用gson解析Json實(shí)例教程

    Java中利用gson解析Json實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于Java中利用gson解析Json 的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),相信對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • java創(chuàng)建jar包并被項(xiàng)目引用步驟詳解

    java創(chuàng)建jar包并被項(xiàng)目引用步驟詳解

    這篇文章主要介紹了java創(chuàng)建jar包并被項(xiàng)目引用步驟詳解,jar包實(shí)現(xiàn)了特定功能的,java字節(jié)碼文件的壓縮包,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-07-07
  • Java實(shí)現(xiàn)的漢語拼音工具類完整實(shí)例

    Java實(shí)現(xiàn)的漢語拼音工具類完整實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)的漢語拼音工具類,結(jié)合完整實(shí)例形式分析了java基于pinyin4j包實(shí)現(xiàn)編碼轉(zhuǎn)換的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Spring如何實(shí)現(xiàn)管理事務(wù)

    Spring如何實(shí)現(xiàn)管理事務(wù)

    Spring通過編程式事務(wù)和聲明式事務(wù)管理來控制事務(wù)的邊界和行為,聲明式事務(wù)管理通過@Transactional注解實(shí)現(xiàn),提供了豐富的配置選項(xiàng)來控制事務(wù)的行為,如傳播行為、隔離級(jí)別、超時(shí)時(shí)間和回滾規(guī)則
    2024-11-11
  • Java Resource路徑整理總結(jié)

    Java Resource路徑整理總結(jié)

    這篇文章主要介紹了 Java Resource路徑整理總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java網(wǎng)絡(luò)編程基礎(chǔ)教程之Socket入門實(shí)例

    Java網(wǎng)絡(luò)編程基礎(chǔ)教程之Socket入門實(shí)例

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程基礎(chǔ)教程之Socket入門實(shí)例,本文講解了創(chuàng)建Socket、Socket發(fā)送數(shù)據(jù)、Socket讀取數(shù)據(jù)、關(guān)閉Socket等內(nèi)容,都是最基礎(chǔ)的知識(shí)點(diǎn),需要的朋友可以參考下
    2014-09-09
  • MyBatis-Plus 分頁查詢以及自定義sql分頁的實(shí)現(xiàn)

    MyBatis-Plus 分頁查詢以及自定義sql分頁的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis-Plus 分頁查詢以及自定義sql分頁的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論

黑山县| 崇阳县| 长岛县| 阳信县| 贵阳市| 汝州市| 称多县| 河东区| 库车县| 邯郸县| 平潭县| 庄河市| 论坛| 嘉定区| 中江县| 无锡市| 西吉县| 且末县| 富裕县| 驻马店市| 周至县| 凤凰县| 北安市| 桓台县| 贺州市| 禹州市| 翼城县| 舒城县| 安仁县| 鄂尔多斯市| 杨浦区| 乳山市| 宁国市| 武平县| 九龙坡区| 玉山县| 孟津县| 古蔺县| 莱州市| 中阳县| 乐山市|