我有一個Spring 2.5.x應用程序,我正在遷移到Spring 3並碰到一個小問題。春天3 <mvc:攔截器>有缺陷?
我有一個像處理程序映射,以便:
<bean id="handlerMappings1" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="interceptor1" />
<ref bean="interceptor2" />
....
<ref bean="interceptorN" />
</list>
</property>
<property name="urlMap">
<map>
<entry key="/url1.html" value-ref="controller1" />
<entry key="/url2.html" value-ref="controller2" />
....
<entry key="/url100.html" value-ref="controller100" />
</map>
</property>
</bean>
,另一個這樣的:
<bean id="handlerMappings2" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/urlA.html" value-ref="controllerA" />
<entry key="/urlB.html" value-ref="controllerB" />
....
<entry key="/urlN.html" value-ref="controllerN" />
</map>
</property>
</bean>
我慢慢都與@RequestMapping
註解用<context:component-scan>
(其基本上註冊一個DefaultAnnotationHandlerMapping
替換)。
在Spring 3中,我看到了<mvc:interceptors>
標記,它可以用來爲某些URL添加攔截器,但是您只能指定一個攔截器,至少這就是我看到的from the schema。
從我所能得出的結果來看,我必須爲每個攔截器註冊其中的一個,它將複製我所有URL的次數,因爲我有攔截器(我甚至不知道它們以什麼順序運行)。
另一方面,我不能在DefaultAnnotationHandlerMapping
上添加iterceptors,因爲它們將爲所有我的控制器運行,並註釋@RequestMapping
,我不想那樣做。
那麼我怎樣才能指定攔截器是Spring 3的一些URL,而不重複的URL和 保持基於@RequestMapping
註釋的控制器映射的URL?