带有注释的Spring HandlerInterceptor映射

use*_*696 9 java model-view-controller spring

美好的一天.我有一个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());
    }

}
Run Code Online (Sandbox Code Playgroud)

我需要我LoggerInterceptor处理所有控制器的请求,而我AccessInterceptor只需处理PrivateController请求.我必须用注释映射InterceptorsControllers

use*_*696 21

解决它.

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

}
Run Code Online (Sandbox Code Playgroud)

  • @LNT springboot会因为`@ EnableWebMvc`注释而中断.这将关闭springboot的默认mvc配置.只需删除此注释即可. (4认同)