繁体   English   中英

带有注释的Spring HandlerInterceptor映射

[英]Spring HandlerInterceptor mapping with annotations

美好的一天。 我有一个spring mvc应用程序和2个控制器。 第一个控制器(PublicController)可以处理来自所有用户的请求,Second(PrivateController)只能处理授权用户。

所以我实现了两个Handler Interceptor

@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());
    }

}

我需要我的LoggerInterceptor来处理所有控制器的请求,而我的AccessInterceptor只需要处理PrivateController的请求。 我必须使用注释将Interceptors映射到Controllers

解决它。

@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/**");;
    }

}

我不知道为什么,当我用你的方式,它工作。 但拦截器执行了两次。 我发现了另一种方法。

    @Bean
    public MappedInterceptor interceptor() {
        return new MappedInterceptor(null, new String[]{"/","/**/*.js", "/**/*.html", "/**/*.css"}, new LogInterceptor());
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM