带有注释的Spring HandlerInterceptor映射
美好的一天。 我有一个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()); }