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