過濾器使用與bean注入

2021-08-04 22:53:17 字數 1423 閱讀 9022

在專案啟動時,***listener最先初始化,然後是過濾器filter,最後是servlet。

spring***在啟動時會讀取spring配置檔案,進行spring容器的初始化。springmvc的dispatcherservlet初始化時會讀取springmvc的配置檔案,進行springmvc容器的初始化。spring容器初始化時會例項化各個bean。(個人認為web容器初始化時其中的各元素是按上述順序依次初始化的,其他元素全部初始化完成之後web容器才初始化完成。但目前沒有看到過乙個十分確切的說法,等以後有時間研究一下原始碼)。

網上很多資料說在過濾器中拿不到spring注入的bean,原因是過濾器初始化時spring容器還沒初始化好,其實並不是。下面看一段**:

在web.xml中定義過濾器:

demofilterfilter-name>

xx.framework.filter.demofilterfilter-class>

filter>

demofilterfilter-name>

/*

然後在過濾器的初始化方法init中:

@override

public

void

init(filterconfig filterconfig) throws servletexception

delegatingfilterproxyfilter-name>

org.springframework.web.filter.delegatingfilterproxyfilter-class>

param>

targetbeannameparam-name>

demofilterparam-value>

param>

param>

targetfilterlifecycleparam-name>

true

param-value>

param>

filter>

delegatingfilterproxyfilter-name>

/*

然後在spring容器中配置demofilter這個bean:

class="xx.framework.filter.demofilter" />

在dofilter方法中可以獲取到注入的bean了:

@override

public

void

dofilter(servletrequest req, servletresponse resp, filterchain filterchain) throws ioexception, servletexception

其中redistemplate是通過@resource註解注入進來的。

springBoot過濾器注入Bean的空指標問題

在過濾器中的dofilterinternal寫業務 時,需要用到spring bean元件,發現在過濾器中無法初始化bean元件,均為nullpointexception,經檢查掃瞄包路徑沒問題。最終確定容器載入順序引發的問題,在web.xml中各個元素的執行順序是這樣的,context param...

Java Filter過濾器使用

1 建立乙個servlet並且實現filter介面 該類需要實現filter介面中的init dofilter destory 方法 其中init 方法自動在專案啟動的時候載入,dofilter 在呼叫xml配置的路徑是載入,destory 方法在退出專案的時候進行。public class tes...

過濾器Filter中注入類Bean

delegatingfilterproxy管理過濾器 間的聯絡 filterchainproxy 過濾器鏈 這是一種繁瑣的方式,會讓web.xml顯得十分雜亂,如果我們配置了太多過濾器的話。我們最好新增乙個單獨的入口,在web.xml中,然 web.xml配置 contextconfiglocati...