java - Spring 拦截器适用于 xml 但不适用于配置类

标签 java xml spring annotations interceptor

我目前使用的拦截器是这样配置的 xml :

<mvc:interceptors>
    <bean class="org.resthub.dashboard.BasicInterceptor" />
</mvc:interceptors>

但我想把它放在我的配置类中:

    @Configuration
    @ComponentScan("org.resthub.dashboard")
    @EnableWebMvc
    @EnableAspectJAutoProxy(proxyTargetClass=true)
    public class WebAppConfig extends WebMvcConfigurerAdapter{

        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new BasicInterceptor());
        }

        @Bean
        public InternalResourceViewResolver setupViewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/views/");
            resolver.setSuffix(".jsp");
            return resolver;
        }
    }

但它不起作用,我不知道为什么。永远不会调用拦截器。

有什么想法吗?

谢谢

edit :这里是 BasicInterceptor

    package org.resthub.dashboard;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

    public class BasicInterceptor extends HandlerInterceptorAdapter {

        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            // TODO Auto-generated method stub
            super.postHandle(request, response, handler, modelAndView);

            System.out.println("INTERCEPTORORRR§§§§§§");
            if (modelAndView != null && modelAndView.getModelMap() != null) {
    ...
            }
        }

    }

最佳答案

看起来你的配置是正确的,至少如果你已经确认它确实被拾取了。但是,问题可能是在请求期间发生某些事情导致 postHandle 不被执行。确保在请求执行期间没有抛出异常。并且要验证是否确实使用了拦截器,您可以实现 preHandleafterCompletion 并查看是否执行了这些方法。

关于java - Spring 拦截器适用于 xml 但不适用于配置类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16081861/

相关文章:

java - Android 中的 `Unknown` ( `Other` ) 内存泄漏?

java - 一起使用 JavaCV 和 Realm 会导致 "java.lang.UnsatisfiedLinkError"

java - 使用另一个类的对象创建数组 (Java)

java - 需要在java中将XML转换为HTML

xml - Go 中的低级 XML 流编写器?

xml - 使用 Microsoft XML v3.0 或 v6.0 时出错

java - 如何测试带有自定义 bean-spel 的 @PreAuthorize 是否有效?

spring - Autowire FeignClient 跨 maven 项目

java - org.springframework.context.NoSuchMessageException : No message found under code 'Size.userForm.username' for locale 'en_US'

java - PostgreSQL + Hibernate + Spring 自动创建数据库