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
相关推荐
涡能增压发动积1 天前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
云烟成雨TD1 天前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Wenweno0o1 天前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg3213211 天前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
tyung1 天前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald1 天前
SpringBoot - 自动配置原理
java·spring boot·后端
@yanyu6661 天前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
殷紫川1 天前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月1 天前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得