我有一个 Spring 3 Web 应用程序,它实现了两个拦截器。我使用一个带有@Configuration注释的配置类。代码如下:
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
super.addInterceptors(registry);
registry.addInterceptor(homeInterceptor()).addPathPatterns("/");
registry.addInterceptor(allInterceptor());
}
无论我以什么顺序将拦截器添加到注册表中,allInterceptor 的 preHandle 函数总是在 homeInterceptor 的 preHandle 之前调用。有谁知道如何控制拦截器的调用顺序?
Thanks!
我查看了底层实现,全局拦截器(不与任何路径映射关联)在映射拦截器(具有关联的路径模式)之前执行。所以如果你想要homeInterceptor
之前执行allInterceptor
, the allInterceptor
可能必须制作一个映射拦截器(通过提供路径模式)。
这是记录拦截器并在运行时查找拦截器的两个方法:org.springframework.web.servlet.handler.AbstractHandlerMapping.initInterceptors()
org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandlerExecutionChain(Object, HttpServletRequest)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)