привязать Spring HandlerInterceptor только к одному контроллеру - PullRequest
15 голосов
/ 12 августа 2010

Использование Spring 3.0.2.RELEASE. У меня есть 2 контроллера в пакете com.myCompany. Контроллеры активируются через компонентное сканирование

<context:component-scan base-package="com.myCompany" />

тогда у меня привязка перехватчика к двум контроллерам через

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
   <property name="interceptors">
     <list>
       <ref bean="myInterceptor"/>
     </list>
   </property>
 </bean>

Как я могу привязать перехватчик только к одному конкретному контроллеру или только к определенным методам внутри контроллера? Справочная информация: я хочу проверить URL, что он содержит определенные параметры

Docu Link

1 Ответ

20 голосов
/ 12 августа 2010

Когда вы вводите перехватчики в компонент HandlerMapping, эти перехватчики применяются к каждому обработчику, отображаемому этим HandlerMapping. Это было хорошо в дни до аннотации, поскольку вам нужно было бы настроить несколько HandlerMapping бинов. Однако с аннотациями у нас, как правило, один DefaultAnnotationHandlerMapping, который отображает все, поэтому эта модель не работает.

Решение заключается в использовании <mvc:interceptors>, где вы явно отображаете пути к bean-объектам-перехватчикам. См. документы и этот пример:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/secure/*"/>
        <bean class="org.example.SecurityInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...