欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > WebMvcConfigurer详解

WebMvcConfigurer详解

2024/12/22 0:58:39 来源:https://blog.csdn.net/a147775/article/details/144359540  浏览:    关键词:WebMvcConfigurer详解

1、什么是WebMvcConfigurer?

WebMvcConfigurer 是 Spring 5 引入的一个接口,它用于在 Spring MVC 中自定义配置。通过实现这个接口,你可以对 Spring MVC 的行为进行高度定制,提供一种方式来修改 Spring MVC 默认的配置,而不需要直接修改 web.xml 或者通过 DispatcherServlet 配置文件。

2、主要应用场景

2.1、 注册拦截器(Interceptors)

1、自定义拦截器实现 HandlerInterceptor

public class MyInterceptor implements HandlerInterceptor {// 请求到达处理器之前调用,返回true表示继续处理,返回false表示拦截请求@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("Pre-handle: 请求开始之前...");// 这里可以做权限验证、日志记录等return true; // 继续执行请求}// 请求处理后,视图渲染之前@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("Post-handle: 请求处理之后...");// 这里可以修改模型数据,添加数据到视图等}// 请求处理完成后,渲染视图之后执行,通常用于清理资源@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("After-completion: 请求完成之后...");// 这里可以进行资源清理等工作}
}

2、通过实现 addInterceptors 方法,你可以注册一个或多个拦截器。

public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor())  // 注册自定义的拦截器.addPathPatterns("/**")  // 拦截所有请求.excludePathPatterns("/login", "/static/**"); // 排除某些路径}
}

2.2、配置静态资源处理(Static Resources Handling)

使用 addResourceHandlers 方法,你可以为静态资源配置处理规则,指定静态资源的访问路径。

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");  // 配置静态资源的目录
}

2.3、跨域配置(CORS)

使用 addCorsMappings 方法,你可以配置允许跨域请求的路径和相关设置。

@Override
public void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")  // 所有路径.allowedOrigins("http://localhost:8080")  // 允许的来源.allowedMethods("GET", "POST")  // 允许的请求方法.allowedHeaders("*");  // 允许的请求头
}

2.4、配置视图解析器(View Resolver)

你可以通过 configureViewResolvers 方法来配置 Spring MVC 的视图解析器。

@Override
public void configureViewResolvers(ViewResolverRegistry registry) {registry.jsp().prefix("/WEB-INF/views/").suffix(".jsp");  // 配置 JSP 视图解析器
}

2.5、配置消息转换器(Message Converters)

通过 configureMessageConverters 方法,你可以定制 HTTP 消息转换器,例如 JSON 和 XML 的转换。

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new MappingJackson2HttpMessageConverter());  // 添加 Jackson 解析器来处理 JSON
}

2.6、添加格式化器和转换器(Formatters and Converters)

通过 addFormatters 方法,你可以添加自定义的格式化器和转换器。

@Override
public void addFormatters(FormatterRegistry registry) {registry.addConverter(new MyCustomConverter());  // 添加自定义的转换器
}

3、总结

WebMvcConfigurer 是 Spring 5 引入的一个接口,它用于定制 Spring MVC 的行为,使得开发者能够更加灵活地修改和扩展 Spring MVC 默认的配置。
它提供了多种方法,可以定制拦截器、视图解析器、静态资源处理、消息转换器、CORS 配置等。
使用 WebMvcConfigurer 可以让你无需修改 Spring 源代码,就能轻松定制 Spring MVC 的行为。
在 Spring Boot 中,@Configuration 注解的配置类通常实现 WebMvcConfigurer 来进行这些配置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com