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
相关推荐
dearxue2 分钟前
这一次,我们一起把AI的复杂一口吃掉
人工智能·后端
打字机v7 分钟前
OOP 面向对象 java 基础--服务+maven+mysql
后端
fliter9 分钟前
Rust 项目管理动态 — 2026 年 2 月
后端
码语智行16 分钟前
地图上图、空间拓扑查询示例
java·arcgis
苍何20 分钟前
一个令人惊艳的开源项目,Agent Skill 开始自进化了?
后端
程序员黑豆30 分钟前
AI全栈开发 - Java:变量
java·前端·ai编程
我是一颗柠檬31 分钟前
【Java项目技术亮点】分库分表+数据路由策略:单表5000万后的架构升级方案
java·开发语言·分布式·架构
布朗克16839 分钟前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio
小研说技术44 分钟前
Spring AI实现rag流程(简易版)
java·后端
亓才孓1 小时前
【本地项目引用外部库的类,想修改字段遇到的请缓存的问题】
java·maven