Проблемы с отображением URL в Spring 3.0
Я тестирую обновление с Spring 2.0 до Spring 3.0.5 на Tomcat, и у меня возникает проблема, связанная с разным поведением сопоставления для URL-адресов, которые имеют конечную косую черту и идентичный URL-адрес без конечной косой черты.
Например, в моей реализации Spring 2.0 следующие URL-адреса будут отображаться на один и тот же класс контроллера в соответствии с нижеприведенной конфигурацией XML Spring MVC:
/search/categories
/search/categories/
<bean id="searchMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="order" value="1"/>
<property name="mappings">
<props>
<prop key="/search/categories">categoriesController</prop>
</props>
</property>
</bean>
Тем не менее, весной 3.0.5, /search/categories/
(обратите внимание на косую черту) не отображается на контроллер. Только /search/categories
(без косой черты) отображается.
Я знаю, что конфигурация XML устарела, и, к сожалению, я пока не могу от нее отказаться. Но я не уверен, почему в Spring 3.0.5 появилось новое поведение для URL с конечными косыми чертами. Есть предложения или мысли по поводу возможного исправления? Нужно ли мне идти настолько далеко, чтобы реализовать условие перезаписи Apache, чтобы удалить косые черты в URL?
Спасибо за вашу помощь!
1 ответ
Я бы сказал, что самое простое решение - создать BeanPostProcessor
это удаляет косые черты.
Или лучше BeanFactoryPostProcessor
Таким образом, вы можете редактировать определения бинов, а не сами бины.