【发布时间】:2021-11-02 20:54:29
【问题描述】:
我偶然发现了一个项目的配置类,该项目从传统的 spring 转换为 Spring Boot。我看到有两种添加拦截器的方法。喜欢这些
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor( new MyInterceptorOne()).addPathPatterns("/api/data/**");
}
@Bean
public MappedInterceptor mappedResponseHeaderInterceptor() {
return new MappedInterceptor(new String[] { "/static/css/**", "/static/img/**" }, new ResponseHeaderInterceptor());
}
}
两个拦截器都在工作。我想知道在 Spring Boot 中添加拦截器的正确方法是什么以及为什么存在这两种方法
【问题讨论】:
-
两者都有效,您首先在内部使用
MappedInterceptor。所以或多或少它们是相同的,第一个更容易并且应该使用。这实际上只起作用,因为 Spring Boot 在上下文中检测到HandlerInterceptor实例并自动注册它们,这在普通的 Spring 应用程序中不起作用。
标签: java spring spring-boot spring-mvc