WebMvcConfigurer 是 Spring Framework 中的一个接口,
用于配置 Spring MVC(Model-View-Controller)框架的行为。
通过实现该接口,可以添加拦截器、跨域配置、自定义消息转换器、视图解析器等。
实现拦截器的不同策略:
编写一个类实现HandlerInterceptor接口;
编写一个类实现WebMvcConfigurer 的 addInterceptors
网络:springboot\springMVC配置拦截器以及放行资源
springboot\springMVC配置拦截器以及放行资源_springmvc配置过滤器检查session-CSDN博客
Filter、Interceptor 几乎拥有相同的功能?
Filter是Servlet定义的原生组件。好处,脱离Spring应用也能使用
Interceptor是Spring定义的接口。可以使用Spring的自动装配等功能
WebMvcConfigurer 接口包括的方法
- addInterceptors
通过实现这个方法,您可以添加拦截器,拦截器用于在请求进入控制器方法之前或之后执行一些逻辑。
示例:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/") //所有请求都被拦截包括静态资源
.excludePathPatterns("/","/index","/register" ,"/static/"); //放行的请求
//ps 或者在配置中写spring.mvc.static-path-pattern=/static/**,然后在本页面改下,后边直接写/static/,
}
- extendMessageConverters
这个方法允许您扩展或修改默认的消息转换器(HttpMessageConverter),用于处理请求和响应的消息。
- configureViewResolvers
这个方法允许您配置视图解析器,您可以添加自定义的视图解析器。
- addResourceHandlers
通过实现这个方法,您可以配置静态资源的处理,例如CSS、JavaScript文件或图像。
- configureContentNegotiation
这个方法用于配置内容协商策略,允许根据请求的头部信息选择响应的内容类型。
- addCorsMappings
用于配置跨域资源共享(CORS)的映射规则,以允许或拒绝跨域请求。
示例:
public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST","OPTIONS") .allowedHeaders("*") .exposedHeaders("Access-Control-Allow-Headers", "Access-Control-Allow-Methods", "Access-Control-Allow-Origin", "Access-Control-Max-Age", "X-Frame-Options") .allowCredentials(false) .maxAge(3600); }
7.注入Bean
如果用的springboot,使用了内置的tomcat,就需要在此注入ServerEndpointExporter,这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint 。
要注意,如果使用独立的servlet容器,而不是直接使用springboot的内置容器,就不要注入ServerEndpointExporter,因为它将由容器自己提供和管理
示例:
@Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }