Spring Boot 与 Spring MVC 的整合本质上是自动完成的,因为 Spring Boot 默认内嵌了对 Spring MVC 的支持。以下是关键要点:
核心机制:自动配置
Spring Boot 通过 spring-boot-starter-web 依赖自动配置 Spring MVC 的核心组件:
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
此依赖包含:
DispatcherServlet(自动注册)- 默认视图解析器
- 静态资源处理(如
/static/**) - 消息转换器(如 JSON 支持)
自定义配置(可选)
若需覆盖默认行为,可通过以下方式:
1. 配置类继承 WebMvcConfigurer
java
@Configuration
public class WebConfig implements WebMvcConfigurer {
// 注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor());
}
// 自定义视图解析
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
}
2. 配置文件修改参数
在 application.yml 中调整默认值:
yaml
spring:
mvc:
static-path-pattern: /resources/** # 修改静态资源路径
view:
prefix: /templates/
suffix: .html
控制器示例
Spring MVC 的 @Controller 可直接使用:
java
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
}
常见扩展场景
| 需求 | 实现方式 |
|---|---|
| 全局异常处理 | @ControllerAdvice + @ExceptionHandler |
| 自定义消息转换器 | 重写 configureMessageConverters() |
| 跨域配置 | @CrossOrigin 或 addCorsMappings() |
总结
Spring Boot 通过 约定优于配置 简化了 Spring MVC 的整合:
- 默认配置开箱即用
- 通过接口/注解灵活定制
- 无需手动配置
web.xml或DispatcherServlet
提示:需避免同时使用
@EnableWebMvc注解,否则会禁用自动配置。