• WebMvcConfigurer


    WebMvcConfigurer是Spring MVC框架中的一个核心接口,它允许开发者自定义Spring MVC的配置,以满足应用程序的特定需求。通过实现这个接口,开发者可以注册拦截器、添加视图控制器、配置视图解析器等,而无需使用XML配置。以下是对WebMvcConfigurer的详细解读:

    一、接口定义与继承

    WebMvcConfigurer是一个回调接口,它提供了一系列方法来配置Spring MVC的行为。在Spring 5.0之前,开发者通常会通过继承WebMvcConfigurerAdapter类来实现这个接口,但由于WebMvcConfigurerAdapter在Spring 5.0中被废弃,现在开发者直接实现WebMvcConfigurer接口即可。

    二、常用方法及其作用

    1. addViewControllers(ViewControllerRegistry registry)
      ○ 用于注册视图控制器。这些控制器将请求路径映射到视图名称,非常适合简单的路径到视图的映射,无需编写实际的控制器类。
    2. configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
      ○ 配置静态资源的处理。通常用于启用或禁用默认的Servlet处理静态资源,如CSS、JavaScript文件等。
    3. addResourceHandlers(ResourceHandlerRegistry registry)
      ○ 用于配置静态资源的处理。开发者可以定义静态资源(如图片、CSS文件、JavaScript文件)的位置和访问路径。
    4. addInterceptors(InterceptorRegistry registry)
      ○ 用于注册拦截器。拦截器可以在请求处理的不同阶段(如请求前、请求后)执行自定义逻辑。
    5. configureViewResolvers(ViewResolverRegistry registry)
      ○ 配置视图解析器。开发者可以定义视图解析器的行为,例如Thymeleaf、JSP等视图的解析方式。
    6. configureContentNegotiation(ContentNegotiationConfigurer configurer)
      ○ 配置内容协商策略。决定响应的内容类型(如JSON、XML、HTML),根据请求头中的Accept字段来返回不同的响应格式。
    7. configureMessageConverters(List> converters)
      ○ 配置消息转换器。消息转换器用于将HTTP请求和响应的内容转换为Java对象或将Java对象转换为响应内容。
    8. addCorsMappings(CorsRegistry registry)
      ○ 配置跨域资源共享(CORS)。允许开发者为特定的路径或URL模式设置跨域请求的规则。
    9. configurePathMatch(PathMatchConfigurer configurer)
      ○ 配置路径匹配规则。允许开发者自定义路径匹配的策略,如是否使用后缀模式匹配、是否使用尾随斜杠匹配等。

    三、使用示例

    以下是一个简单的WebMvcConfigurer实现示例,展示了如何注册视图控制器、配置静态资源处理、注册拦截器和配置视图解析器:

    import org.springframework.context.annotation.Configuration;  
    import org.springframework.web.servlet.config.annotation.*;  
      
    @Configuration  
    public class WebMvcConfig implements WebMvcConfigurer {  
      
        @Override  
        public void addViewControllers(ViewControllerRegistry registry) {  
            registry.addViewController("/").setViewName("home");  
            registry.addViewController("/home").setViewName("homePage");  
        }  
      
        @Override  
        public void addResourceHandlers(ResourceHandlerRegistry registry) {  
            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");  
        }  
      
        @Override  
        public void addInterceptors(InterceptorRegistry registry) {  
            registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");  
        }  
      
        @Override  
        public void configureViewResolvers(ViewResolverRegistry registry) {  
            registry.jsp("/WEB-INF/views/", ".jsp");  
            // 或者使用其他视图解析器,如Thymeleaf等  
        }  
      
        // 其他配置方法...  
    }
    

    在上面的示例中,我们实现了WebMvcConfigurer接口,并通过重写其方法来自定义Spring MVC的配置。我们注册了两个视图控制器,将"/“和”/home"路径映射到对应的视图名称;配置了静态资源处理器,将"/static/**“路径下的请求映射到类路径下的”/static/"目录;注册了一个拦截器,对所有请求进行拦截;并配置了JSP视图解析器。
    总的来说,WebMvcConfigurer为开发者提供了极大的灵活性来自定义Spring MVC的配置,以满足不同应用程序的需求。

  • 相关阅读:
    【论文笔记】NeRF-RPN: A general framework for object detection in NeRFs
    php开发工具PhpStorm V2022.2正式发布——支持Mockery 和 Rector
    PMP证书在国内已经泛滥了,大家怎么看?
    9. 回文数 --力扣 --JAVA
    【App自动化测试】(十七)遍历测试工具——Android Maxim
    Java之俄罗斯方块小游戏
    分布式理论与设计 三、分布式一致性协议
    nodejs+vue网上婚纱购物系统elementui
    2022,一个Java程序猿的装机配置
    vuejs之父子组件的通信【props】和【$emit】
  • 原文地址:https://blog.csdn.net/Fireworkit/article/details/143400749