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
相关推荐
点光15 小时前
使用Sentinel作为Spring Boot应用限流组件
后端
不要秃头啊15 小时前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员
有志16 小时前
Java 项目添加慢 SQL 查询工具实践
后端
山佳的山16 小时前
KingbaseES 共享锁(SHARE)与排他锁(EXCLUSIVE)详解及测试复现
后端
Leo89916 小时前
rust 从零单排 之 一战到底
后端
程序员清风17 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
鱼人17 小时前
MySQL 实战入门:从“增删改查”到“高效查询”的核心指南
后端
大鹏198817 小时前
告别 Session:Spring Boot 实现 JWT 无状态登录认证全攻略
后端
Java编程爱好者17 小时前
从 AQS 到 ReentrantLock:搞懂同步队列与条件队列,这一篇就够了
后端
鱼人18 小时前
Nginx 全能指南:从反向代理到负载均衡,一篇打通任督二脉
后端