filter裡使用spring 注入例項失敗

2021-09-02 11:07:00 字數 563 閱讀 4168

在web開發中我們有時候會想要在請求的過濾器中做一些事情,此時可能依賴其他的物件。這些物件由spring來管理,假如在啟動時候已經由容器幫助你例項化了。這時你想在filter裡使用,並注入到filter裡,在使用物件的時候就會報空指標,意味著注入失敗。

後來仔細分析了下web.xml載入順序,才明白是怎麼回事。

不管你的xml元素位置在哪,最終的啟動順序是這樣的。

context-param -> listener -> filter -> servlet

也就是說你在容器啟動過程中filter先例項化,此時根本沒例項化org.springframework.web.servlet.dispatcherservlet

所有導致了spring管理的物件沒有被載入。

解決方法是我們可以在 context-param節點中的spring context 裡去掃下你的物件包,或在裡面配置物件bean

另外在filter 裡我們是這樣獲取spring上下文的

public void init(filterconfig filterconfig) throws servletexception

在DAO裡對記錄集使用Filter

部分來自這個帖子的討論,感謝wwwwb指點。set rsttmp currentdb.openrecordset a dbopendynaset rsttmp.filter id like strselbid set rsttmpfiltered rsttmp.openrecordset rsttm...

Spring框架之Filter應用

在web.xml中進行配置,對所有的url請求進行過濾,就像 擊鼓傳花 一樣,鏈式處理。配置分為兩種a和b。a 普通配置 在web.xml中增加如下內容 permissionfilter com.taobao.riskm.filter.permissionfilter b 高階配置 允許 注入spr...

Spring框架之Filter應用

自 urlpattern規則在最後!在web.xml中進行配置,對所有的url請求進行過濾,就像 擊鼓傳花 一樣,鏈式處理。配置分為兩種a和b。a 普通配置 在web.xml中增加如下內容 permissionfilter com.taobao.riskm.filter.permissionfilt...