Spring Boot(三)Spring Boot整合SpringMVC

一、 中央转发器(DispatcherServlet)

实现方式
  • 自动配置类 :核心是 DispatcherServletAutoConfiguration,Spring Boot 启动时会自动检测并注册 DispatcherServlet 到 Servlet 容器(Tomcat/Jetty/Undertow)。
  • 默认配置
    • 默认映射路径:/(处理所有请求,除了静态资源)
    • 自动设置初始化优先级(保证先于其他 Servlet 初始化)
    • 自动绑定 Spring 容器上下文,无需手动关联
  • 自定义配置(application.yml):
XML 复制代码
spring:
  mvc:
    servlet:
      path: /api  # 自定义映射路径(如所有/api开头的请求由DispatcherServlet处理)
      load-on-startup: 1  # 启动时加载(默认1)

二、控制器(Controller)

实现方式
  • 核心注解
    • @Controller:标识控制器 Bean(返回视图)
    • @RestController@Controller + @ResponseBody(返回 JSON/XML,无视图)
    • @RequestMapping/@GetMapping/@PostMapping:映射请求路径 / 方法
  • 自动扫描 :Spring Boot 默认扫描@SpringBootApplication所在包及其子包下的@Controller/@RestController,无需手动注册控制器 Bean。

三、视图解析器(ViewResolver)

  • 默认装配的解析器 (优先级从高到低):
    1. ContentNegotiatingViewResolver:内容协商解析器(根据请求头Accept判断返回 JSON / 视图)
    2. InternalResourceViewResolver:JSP 视图解析器(默认前缀/WEB-INF/,后缀.jsp
    3. 若引入 Thymeleaf 依赖,自动装配ThymeleafViewResolver(替代 JSP,Spring Boot 首选)
  • 默认配置(application.yml):
XML 复制代码
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/  # JSP视图前缀
      suffix: .jsp             # JSP视图后缀
  thymeleaf:
    prefix: classpath:/templates/  # Thymeleaf模板路径(默认)
    suffix: .html                 # Thymeleaf后缀(默认)
    cache: false                  # 开发环境关闭缓存
复制代码
当我们做文件上传的时候我们也会发现multipartResolver是自动被配置好的
文件上传大小可以通过配置来修改
打开application.properties, 默认限制是10MB,我们可以任意修改

四、消息转换和格式化

负责 HTTP 请求 / 响应的序列化与反序列化(如 JSON、XML、表单数据),Spring Boot 自动配置主流转换器。

  • 装配的转换器
    • MappingJackson2HttpMessageConverter:JSON 转换器(默认,依赖 jackson-databind)
    • StringHttpMessageConverter:字符串转换器(默认编码 UTF-8)
    • FormHttpMessageConverter:表单数据转换器
  • 时间类型我们可以在配置文件修改
XML 复制代码
# jackson全局JSON格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.write-dates-as-timestamps=false

# Spring MVC请求参数格式化
spring.mvc.format.date=yyyy-MM-dd
spring.mvc.format.datetime=yyyy-MM-dd HH:mm:ss
spring.mvc.format.time=HH:mm:ss
相关推荐
长栎2 分钟前
你用了五年的消息队列,不知道它背后站着中介者模式
后端
Gopher_HBo2 分钟前
路由注册:RouterGroup(routergroup.go)
后端
用户608186527906 分钟前
Avalonia UI 控件样式定义的三种方式详解
后端
hey_sml6 分钟前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
feng尘7 分钟前
volatile 可见性与内存屏障知识点
后端
SamDeepThinking9 分钟前
第3篇:企业级CAS单点登录实战-技术架构设计方案
后端·程序员·架构
掉鱼的猫9 分钟前
Solon AOT & Native:三段式编译,从 Java 到原生可执行文件
java·云原生
JoyT10 分钟前
Agent 开源项目全景解析(上):LangGraph、Spring AI 与 Agent Runtime
后端
云技纵横12 分钟前
线上接口突然超时,怎么判断卡在 Nginx、线程池、连接池还是 SQL?
后端·sql·mysql
Java内核笔记13 分钟前
容错能力进入 spring-core:Spring Boot 4 原生重试机制全解析
java·后端