Java 仅将Spring HandlerInterceptor绑定到一个控制器

Java 仅将Spring HandlerInterceptor绑定到一个控制器,java,spring,spring-mvc,Java,Spring,Spring Mvc,使用弹簧3.0.2.1释放。我在com.myCompany包中有两个控制器。控制器通过组件扫描激活 <context:component-scan base-package="com.myCompany" /> 然后我让一个拦截器通过 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="i

使用弹簧3.0.2.1释放。我在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是否包含某些参数


当您将拦截器注入
HandlerMapping
bean时,这些拦截器将应用于该
HandlerMapping
映射的每个处理程序。在注释之前的日子里,这很好,因为您只需要配置多个
HandlerMapping
bean。但是,对于注释,我们倾向于使用一个映射所有内容的
DefaultAnnotationHandlerMapping
,因此此模型不起作用

解决方案是使用
,在这里显式地将路径映射到拦截器bean。请参见,以及此示例:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/secure/*"/>
        <bean class="org.example.SecurityInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>


谢谢。但我不明白。我可以将代码段添加到包含“”的文件中吗?然后我得到“org.xml.sax.saxpasseeption:cvc complex type.2.4.c:匹配的通配符是严格的,但是找不到元素“mvc:interceptors”的声明。”我添加了xmlns:mvc=“@Martin:查看文档的固定链接。除了名称空间之外,还需要添加
schemaLocation
。谢谢skaffman。它起作用了!我已经监督了链接。。马丁:很难说。从1.2.8开始我就一直在使用Spring,所以我逐渐适应了它。不过,我仍然认为参考手册非常好。我认为您应该将mapping标记更改为mvc:mapping``还可使用自定义注释进行检查。