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

在springboot中注入FilterRegistrationBean不生效的原因

 更新時間:2021年08月12日 09:27:30   作者:JAVA碼上飄  
這篇文章主要介紹了在springboot中注入FilterRegistrationBean不生效的原因及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot注入FilterRegistrationBean不生效

回顧

最近自定義了兩個過濾器,接口請求返回加密和sql注入處理過濾器,因為在封裝一些工具包,我在單獨調(diào)好之后,就打算做成一個注解,像springboot啟動類上加@EnableScheduling一樣,可以隨意控制,當我不想讓這倆過濾器生效的時候,那就不加這個注解就可以了。

當然我想到了FilterRegistrationBean的使用方法,注入這兩個過濾器。

但是當我寫完之后,打成包之后,發(fā)現(xiàn)只有sql注入過濾器生效。

原因

原因就是我通過@Bean注解注入FilterRegistrationBean時,沒有對它們起別名,造成沖突,只能注入一個。

我的工程里,寫了兩個下邊的方法:

注入加密過濾器

 /**
     * @return 注入加密過濾器
     */
    @Bean
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new EncryptionFilter());
        registration.addUrlPatterns("/*");
        registration.setName("encryptionFilter");
        registration.setOrder(1);
        return registration;
    }

注入sql注入過濾器

/**
     * @return 注入加密過濾器
     */
    @Bean
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new SqlInjectManagerFilter());
        registration.addUrlPatterns("/*");
        registration.setName("sqlInjectManagerFilter");
        registration.setOrder(2);
        return registration;
    }

這個問題雖然簡單,但是確實影響到我思路了,我最初一直在考慮是不是我做的springboot啟動類加注解觸發(fā)過濾器注入的方式不對,也是因為我看了下@EnableTransactionManagement的注入方式,我差點就懷疑@Import在打成工具包后不能多個使用的問題。尷尬~~~

當我一比較這倆方法的時候,我才懷疑到名字沖突了。因此就分別對它們加了名稱如下:

 /**
     * @return 注入加密過濾器
     */
    @Bean(name = "encryptionFilter")
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new EncryptionFilter());
        registration.addUrlPatterns("/*");
        registration.setName("encryptionFilter");
        registration.setOrder(1);
        return registration;
    }
 /**
     * @return 注入加密過濾器
     */
    @Bean(name = "sqlInjectManagerFilter")
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new SqlInjectManagerFilter());
        registration.addUrlPatterns("/*");
        registration.setName("sqlInjectManagerFilter");
        registration.setOrder(2);
        return registration;
    }

springboot @webfilter FilterRegistrationBean「T」

1、@webfilter過濾指定url

在啟動類加注解@ServletComponentScan

2、Filter類:

import java.io.IOException; 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter; 
@WebFilter(urlPatterns="/task")
public class DemoFilter implements Filter {
 
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {		
	}
 
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("Filter demo task");
		chain.doFilter(request, response);
	}
 
	@Override
	public void destroy() {		
	} 
}

3、@webfilter過濾全部路徑

在filter類上加 @Component 或 @Configuration 注解:

4、FilterRegistrationBean<T> 過濾指定url 或 全部路徑

直接在FilterRegistrationBean<T>中配置即可:

import org.apache.catalina.filters.RemoteIpFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; 
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException; 
@Configuration
public class ConfigurationFilter {
	
    @Bean
    public RemoteIpFilter remoteIpFilter() {
        return new RemoteIpFilter();
    }
 
    @Bean
    public FilterRegistrationBean<MyFilter> testFilterRegistration() {
        FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<MyFilter>();
        registration.setFilter(new MyFilter());//添加過濾器
        registration.addUrlPatterns("/user");//設(shè)置過濾路徑,/*所有路徑
        //registration.addInitParameter("name", "alue");//添加默認參數(shù)
        registration.setName("MyFilter");//設(shè)置優(yōu)先級
        registration.setOrder(2);//設(shè)置優(yōu)先級
        return registration;
    }
 
    public class MyFilter implements Filter {
        @Override
        public void destroy() {
        }
 
        @Override
        public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain
                filterChain)
                throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) srequest;
            System.out.println("this is MyFilter,url :" + request.getRequestURI());
            filterChain.doFilter(srequest, sresponse);
        }
 
        @Override
        public void init(FilterConfig arg0) throws ServletException {
        }
    }
}

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

相關(guān)文章

  • JavaWeb 文件的上傳和下載功能簡單實現(xiàn)代碼

    JavaWeb 文件的上傳和下載功能簡單實現(xiàn)代碼

    這篇文章主要介紹了JavaWeb 文件的上傳和下載功能簡單實現(xiàn)代碼,需要的朋友可以參考下
    2017-04-04
  • java基礎(chǔ)的詳細了解第二天

    java基礎(chǔ)的詳細了解第二天

    這篇文章對Java編程語言的基礎(chǔ)知識作了一個較為全面的匯總,在這里給大家分享一下。需要的朋友可以參考,希望能給你帶來幫助
    2021-08-08
  • java文件上傳下載功能實現(xiàn)代碼

    java文件上傳下載功能實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了java文件上傳下載功能實現(xiàn)代碼,具有一定的參考價值,感興趣的朋友可以參考一下
    2016-06-06
  • MyBatisPlus代碼生成器的使用示例

    MyBatisPlus代碼生成器的使用示例

    本文主要介紹了MyBatisPlus代碼生成器的使用示例,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,感興趣的可以了解一下
    2021-12-12
  • Java運算符的知識點與代碼匯總

    Java運算符的知識點與代碼匯總

    這篇文章主要給大家總結(jié)介紹了關(guān)于Java運算符知識點與代碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • SpringBoot中事務(wù)的只讀屬性詳解

    SpringBoot中事務(wù)的只讀屬性詳解

    這篇文章主要介紹了SpringBoot中事務(wù)的只讀屬性詳解,在開發(fā)過程中,事務(wù)是一個非常重要的概念,在?Spring?Boot中,事務(wù)是通過?AOP?機制來實現(xiàn)的,可以很方便地進行管理,需要的朋友可以參考下
    2023-08-08
  • JPA?CriteriaBuilder子查詢方式

    JPA?CriteriaBuilder子查詢方式

    這篇文章主要介紹了JPA?CriteriaBuilder子查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 基于SpringCloud手寫一個簡易版Sentinel

    基于SpringCloud手寫一個簡易版Sentinel

    SpringCloud Alibaba Sentinel是當前最為流行一種熔斷降級框架,簡單易用的方式可以快速幫助我們實現(xiàn)服務(wù)的限流和降級,保證服務(wù)的穩(wěn)定性。
    2021-05-05
  • Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享

    Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享

    這篇文章主要介紹了Java中將 int[] 數(shù)組 轉(zhuǎn)換為 List分享的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • springboot讀取自定義配置文件節(jié)點的方法

    springboot讀取自定義配置文件節(jié)點的方法

    這篇文章主要介紹了springboot讀取自定義配置文件節(jié)點的方法,本文給大家介紹的非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-05-05

最新評論

潜江市| 辽阳县| 缙云县| 藁城市| 牡丹江市| 镇康县| 彰化县| 集安市| 浑源县| 平舆县| 上高县| 龙岩市| 宝鸡市| 巴青县| 军事| 仁怀市| 龙山县| 玛沁县| 文昌市| 中方县| 天长市| 元氏县| 社旗县| 札达县| 子长县| 万年县| 晋宁县| 武威市| 泊头市| 南丰县| 襄樊市| 文化| 广宁县| 文山县| 双鸭山市| 津市市| 霍邱县| 青铜峡市| 汉沽区| 绥中县| 洛川县|