代码之家  ›  专栏  ›  技术社区  ›  Martin Dürrmeier

仅将弹簧处理器拦截器绑定到一个控制器

  •  15
  • Martin Dürrmeier  · 技术社区  · 15 年前

    使用弹簧3.0.2.释放。我在com.mycompany包中有两个控制器。控制器通过部件扫描激活

    <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>
    

    如何将拦截器绑定到一个特定的控制器,或者仅绑定到控制器内的特定方法? 背景:我想检查包含某些参数的URL

    Docu Link

    1 回复  |  直到 8 年前
        1
  •  20
  •   Shafin Mahmud    8 年前

    当你把拦截器注入 HandlerMapping bean,这些拦截器应用于由它映射的每个处理程序 手绘地图 . 在预注释的日子里没问题,因为您只需要配置多个 手绘地图 豆。但是,对于注释,我们往往有一个 DefaultAnnotationHandlerMapping 它映射了所有内容,所以这个模型不起作用。

    解决方案是使用 <mvc:interceptors> ,其中显式地将路径映射到拦截器bean。见 docs ,这个例子:

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