SpringBoot 踩坑

51 阅读2分钟

SpringBoot配置WebMvc

SpringBoot对Spring MVC的会进行自动配置,这些默认的配置可以满足我们的大部分需求,但是我们对Spring MVC有时会有一些自己的需求定制,对此我们也可以通过自定义配置类(标注@Configuration注解的类)并实现 WebMvcConfigurer接口来定制 SpringMVC 配置,例如拦截器、格式化程序、视图控制器等等。

WebMvcConfigurer 是一个基于 Java 8 的接口,该接口定义了许多与 Spring MVC 相关的方法,其中大部分方法都是 default 类型的,且都是空实现。因此我们只需要定义一个配置类实现 WebMvcConfigurer 接口,并重写相应的方法便可以定制 Spring MVC 的配置。

在SpringBoot项目中,我们可以通过拓展SpringMVC全面接管Spring MVC这两种方式来定制Spring MVC.

  • 拓展Spring MVC

如果SpringBoot对Spring MVC的自动配置不能满足我们的需求的话,我们还可以通过实现 WebMvcConfigurer接口的配置类(implements WebMvcConfigurer),并加上@Configuration 注解来拓展Spring MVC。这样不仅能够保留Spring Boot的Spring MVC的自动的默认配置,还可以额外增加自己的配置。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    /**
     * 设置静态资源映射
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始进行静态资源映射...");
        registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    }
}
  • 全面接管Spring MVC

这个用法其实用得非常少,大家了解一下就好了。

在一些特殊的情况下,我们可能先要抛弃Spring Boot对Spring Boot的全部的自动配置,完全接管Spring MVC。此时我们可以自定义一个WebMvcConfigurer 的配置类,并在该类上标注@EnableWebMvc 注解 来实现完全接管Spring MVC 。(注意:完全接管Spring MVC后,SpringBoot对Spring MVC的自动配置将要全部失效。并且我们还要知道,Spring Boot 能够访问位于静态资源文件夹中的静态文件,这是因为 Spring Boot 对 Spring MVC 的默认自动配置中定义的,当我们全面接管 Spring MVC 后,Spring Boot 对 Spring MVC 的默认配置都会失效,此时再访问静态资源文件夹中的静态资源就会报 404 错误。

小白补充:SpringBoot对SpringMVC的默认配置中,已经将static下的资源全部放行,而且访问的url中省略了/static

创建boot项目启动失败原因:

注意boot版本,创建完idea会默认使用它自动下载的最近maven,并且由于.mvn文件夹的存在,在setting设置中手动更改maven后idea还会自动改回去,所以需要

  1. 手工删除.mvn文件夹后,再更改maven配置。
  2. (修改pom文件中boot版本)然后点击导入maven依赖。
  3. 项目启动成功。

参考链接:blog.csdn.net/weixin_5021…