2011-08-04 44 views
0

我有兩個過濾器類,從org.springframework.web.filter.RequestContextFilter延伸,兩者都以相同的方式在web.xml中配置,都使用@Component註釋。當我只有一個時,一切正常。當我添加第二個,它沒有得到註冊。兩個Spring RequestContextFilter和@Component註釋

爲什麼?我該如何解決這個問題?我需要兩個過濾器?

回答

2

由於Spring @Component是基於類而不是基於名稱的,所以第二個過濾器不會加載,因爲它被第一個過濾器遮蓋。兩個實現類不同的事實是無關緊要的,因爲Spring會搜索擴展Filter的東西。

的解決方案是使用一個限定每個@Component(例如@Component(value = "MyFilter1"))和web.xml過濾器作爲限定符的名稱(例如<filter><filter-name>MyFilter</filter-name>...</filter>。申報

不要忘記使用org.springframework.web.filter.DelegatingFilterProxy和聲明過濾器映射,以及

是的 - 這很奇怪,但我立即回答我自己的問題,我搜索了幾個小時後開始寫它,然後有一個想法,我測試了它,它的工作原理 - 但沒有其他人再次搜索幾個小時的原因。

+0

我不清楚你正在建議的解決方案。您是否可以添加一些細節,例如您的兩個子類的類定義以及相關的方法簽名,還請包括web.xml的所有相關部分以及您的應用程序上下文(如果適用)。 – 2011-10-10 18:12:42