привяжите Spring HandlerInterceptor только к одному контроллеру

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

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

, затем у меня есть перехватчик, привязанный к 2 контроллерам через

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

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

Docu Link

15
задан skaffman 12 August 2010 в 16:46
поделиться

1 ответ

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

Решением является использование , где вы явно сопоставляете пути к bean-компонентам-перехватчикам. См. документы и этот пример:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/secure/*"/>
        <bean class="org.example.SecurityInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>
20
ответ дан 1 December 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: