使用Spring 3.0.2.RELEASE。我在com.myCompany包中有2个控制器。控制器通过组件扫描
激活<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>
如何将拦截器仅绑定到一个特定的Controller或仅绑定到Controller内的某些方法? 背景:我想检查它包含某些参数的URL
答案 0 :(得分:20)
当您将拦截器注入HandlerMapping
bean时,这些拦截器将应用于由HandlerMapping
映射的每个处理程序。这在预注释时很好,因为你只需要配置多个HandlerMapping
bean。但是,使用注释时,我们往往只有一个DefaultAnnotationHandlerMapping
来映射所有内容,因此该模型不起作用。
解决方案是使用<mvc:interceptors>
,您可以显式地将路径映射到拦截器bean。请参阅docs和此示例:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/secure/*"/>
<bean class="org.example.SecurityInterceptor" />
</mvc:interceptor>
</mvc:interceptors>