2011-08-01 52 views
1

我的應用程序正在使用spring applicationContext.xml。我有一個自定義過濾器類(CustomFilter implements Filter),我想在我的應用程序中使用它。執行此操作的正確方法是在applicationContext.xml中創建<bean...註冊?或者簡單的放在web.xml裏面?我想放在applicationContext.xml裏面。但我不知道如何指定將觸發此過濾器的「路徑」。示例myapp/testcustomfilter將觸發此過濾器。在applicationcontext.xml中添加自定義過濾器類

回答

1

FilterToBeanProxy類代理請求彈出託管的bean。您必須在web.xml中定義此過濾器,並將targetBean參數指向您的託管bean。還請檢查FilterChainProxy以定義過濾器鏈。

1

您的過濾器類可以駐留在applicationContext.xml中,並且可以像其他任何Spring bean一樣對待。但是,您需要添加一些內容到web.xml以允許服務器容器獲取它的句柄。

這是春天的DelegatingFilterProxy進來從javadoc

代理爲標準的Servlet 2.3過濾器,委託給一個實現Filter接口Spring管理的bean。在web.xml中支持「targetBeanName」過濾器init-param,在Spring應用程序上下文中指定目標bean的名稱。

web.xml通常會包含一個DelegatingFilterProxy定義,其中指定的filter-name對應於Spring的根應用程序上下文中的一個bean名稱。所有對過濾器代理的調用都將在Spring上下文中委託給該bean,這是實現標準Servlet 2.3過濾器接口所必需的。

此方法對於具有複雜設置需求的過濾器實現特別有用,允許將完整的Spring bean定義機制應用於過濾器實例。

最簡單的設置是在web.xml定義DelegatingFilterProxy濾波器具有相同的名稱作爲applicationContext.xml濾波器豆。 DelegatingFilterProxy將照顧其餘。

1

只需註冊您的Filterweb.xml工程就好了。在我們的應用程序中,我們有非Spring和Spring過濾器的混合體(非Spring過濾器是傳統代碼),它們都很好地一起玩。它還使得維護更容易,因爲您只需要查看一個位置以查看連接的方式,因爲根據定義,web.xml中的順序是執行順序。