Spring MVC Web 配置类:WebMvcConfig 代码解析

该代码是一个典型的 Spring MVC Web 配置类,名为 WebMvcConfig,它实现了 WebMvcConfigurer 接口,用于配置 Spring MVC 相关的行为。

代码功能解析

  1. 配置视图解析器configureViewResolvers 方法用于配置视图解析器,它使用 InternalResourceViewResolver 将视图名称解析为具体的视图文件路径。

  2. 配置全局异常处理器configureHandlerExceptionResolvers 方法用于配置全局异常处理器,它将 GlobalExceptionHandler 添加到异常处理器列表中,用于统一处理应用程序中出现的异常。

  3. 配置请求路径匹配策略configurePathMatch 方法用于配置请求路径匹配策略,它禁用后缀模式匹配,即 false 表示不会匹配 index.html 这样的路径,只匹配 index

  4. 配置拦截器addInterceptors 方法用于配置拦截器,它将 WebInterceptor 添加到拦截器列表中,用于拦截请求并进行相关处理。

  5. 配置静态资源访问路径和资源位置的映射关系addResourceHandlers 方法用于配置静态资源访问路径和资源位置的映射关系,它将 /assets/** 映射到 classpath:/assets/,表示访问 /assets 下的任何资源都会从 classpath:/assets/ 路径下获取。

  6. 配置 Bean

    • webInterceptor() 方法使用 @Bean 注解配置 WebInterceptor Bean,它是一个自定义的拦截器,用于处理请求。
    • globalExceptionHandler() 方法使用 @Bean 注解配置 GlobalExceptionHandler Bean,它是一个自定义的全局异常处理器,用于处理异常。
    • jsonObject() 方法使用 @Bean 注解配置 JSONObject Bean,它是一个 Fastjson 的对象,用于存储和处理 JSON 数据。

知识点内容

  • Spring MVC 配置:包括视图解析器、异常处理器、路径匹配策略、拦截器和静态资源处理等。

  • 注解配置:使用 @Configuration 注解标注该类为配置类,使用 @Bean 注解配置 Bean。

  • 依赖注入:通过 @Bean 注解配置 Bean 并注入到其他组件中。

  • Fastjson:使用 Fastjson 的 JSONObject 类配置 Bean。

代码解读

package com.zhazhapan.efo.config;

import com.alibaba.fastjson.JSONObject;
import com.zhazhapan.efo.exception.GlobalExceptionHandler;
import com.zhazhapan.efo.interceptor.WebInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import java.util.List;

/**
 * @author admin
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix('/');
        viewResolver.setSuffix('.html');
        registry.viewResolver(viewResolver);
    }

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        resolvers.add(globalExceptionHandler());
    }

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.setUseSuffixPatternMatch(false);
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(webInterceptor());
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler('/assets/**').addResourceLocations('classpath:/assets/');
    }

    @Bean
    public WebInterceptor webInterceptor() {
        return new WebInterceptor();
    }

    @Bean
    public GlobalExceptionHandler globalExceptionHandler() {
        return new GlobalExceptionHandler();
    }

    @Bean
    public JSONObject jsonObject() {
        return new JSONObject();
    }
}

总结

WebMvcConfig 类是 Spring MVC 的核心配置类之一,它负责配置 Spring MVC 的各个方面,包括视图解析、异常处理、路径匹配、拦截器、静态资源处理等。通过合理配置 WebMvcConfig 类,可以提高 Web 应用的性能和安全性。

Spring MVC Web 配置类:WebMvcConfig 代码解析

原文地址: https://www.cveoy.top/t/topic/nu4D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录