9

再会。我有一个 spring mvc 应用程序和 2 个控制器。第一个控制器(PublicController)可以处理所有用户的请求,第二个(PrivateController)只能处理授权用户。

所以我实现了两个 Handler Interceptor`s

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="webapp.base.package")
public class WebApplicationConfig extends WebMvcConfigurerAdapter {

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

}

我需要 myLoggerInterceptor处理所有控制器的请求,而 myAccessInterceptor只处理PrivateController's 请求。我必须用注释映射InterceptorsControllers

4

2 回答 2

23

只要解决它。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="webapp.base.package")
public class WebApplicationConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggerInterceptor()).addPathPatterns("/**");;
        registry.addInterceptor(new AccessInterceptor()).addPathPatterns("/private/**");;
    }

}
于 2013-05-23T06:22:24.383 回答
2

我不知道为什么,当我使用你的方式时,它起作用了。但是拦截器执行了两次。我找到了另一种方法来做到这一点。

    @Bean
    public MappedInterceptor interceptor() {
        return new MappedInterceptor(null, new String[]{"/","/**/*.js", "/**/*.html", "/**/*.css"}, new LogInterceptor());
    }
于 2015-10-23T08:47:37.770 回答