У меня есть приложение Spring 2.5.x, которое я перевожу на Spring 3 и столкнулось с небольшой проблемой.
У меня есть обработчик отображения так:
<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
).
Весной 3 я увидел тег <mvc:interceptors>
, который можно использовать для добавления перехватчиков к определенным URL-адресам, но вы можете указать только один перехватчик, по крайней мере это то, что я вижу из схемы .
Из того, что я могу понять, я должен зарегистрировать один из них для каждого перехватчика, который будет дублировать все мои URL столько раз, сколько у меня есть перехватчики (и я даже не знаю, в каком порядке они будут работать).
С другой стороны, я не могу добавить итерцепторы на DefaultAnnotationHandlerMapping
, потому что они будут работать для всех моих контроллеров, помеченных @RequestMapping
, а я этого не хочу.
Так как я могу указать перехватчики Spring 3 для некоторых URL, без повторения URL и
сохранить URL-адрес для сопоставления контроллера на основе аннотации @RequestMapping
?