前言
如何使用 Spring Boot 整合 Spring MVC 框架?
在学习传统 Java Web 开发时,我们是怎么接收用户请求的?
记得我上学的时候,大约在 2018 年,老师教我们使用 Servlet 来接收用户请求。
流程是这样的:需要定义一个类,实现 Servlet 接口,重写对应的方法,在方法里面带有请求对象参数,然后判断请求的类型,不同的请求类型设置不同的处理方法体,都是通过 if 语句来进行判断的。代码写得特别冗余,而且我已经有好多年没这样写过了。
传统开发方式的痛点
今天我用 AI 生成了一个传统 Servlet 的实例,代码如下:
java
// 传统的 Servlet 实现方式
public class TraditionalServlet implements Servlet {
@Override
public void service(ServletRequest req, ServletResponse res) {
// 需要判断请求类型,代码冗余
HttpServletRequest request = (HttpServletRequest) req;
String method = request.getMethod();
if ("GET".equals(method)) {
// GET 请求处理逻辑
} else if ("POST".equals(method)) {
// POST 请求处理逻辑
}
// 更多判断...
}
}
这样的代码看起来特别有年代感,写起来十分繁琐。而且配置完成后还不能直接使用,还需要在 web.xml 中配置这个 Servlet 到底接收哪些请求才能使用,看起来很难受。
Spring MVC 的改进
后来了解了使用 Spring MVC,写起来方便了很多。当然它同样需要配置,比如扫描包等。我们来看一个 Spring MVC 的配置实例:
xml
<!-- Spring MVC 配置文件 -->
<mvc:annotation-driven />
<context:component-scan base-package="com.example.controller" />
虽然比 Servlet 简单,但仍然需要配置文件。
Spring Boot 的简化方案
学习了 Spring Boot 整合 Spring MVC 后,这些配置通通都不需要了!我们只需要使用 @RestController
注解或 @Controller
注解修饰类,就可以进行使用了。下面我们来实际上手体验一下。
实战:创建第一个 API 接口
1. 添加依赖
要使用 Spring MVC,需要在 pom.xml 中添加 Spring Boot Web 依赖:
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
在 Spring Boot 中,要使用任何技术基本都是这个流程:先添加依赖,然后要么直接使用,要么使用配置类进行配置后再使用。大多数情况都是这个流程,没有太多例外的地方。
注意 :如果你的父项目使用了 dependencyManagement
并且用 <scope>import</scope>
标签对依赖进行了管理,那么它不会直接引入依赖,需要在子模块的 dependencies 中显式声明依赖,但不需要指定版本号。
2. 创建控制器
现在的 Spring MVC 不需要 XML 文件进行配置,只需要在对应的类上面添加 @RestController
或者 @Controller
注解就可以了。
java
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}
@RestController
和 @Controller
的区别:
@RestController
修饰的类,返回的参数全部会序列化成 JSON 形式返回到前端@Controller
可以直接返回视图,比如 HTML 页面等@RestController
比较适合前后端分离的项目
3. 启动测试
启动项目后,默认端口是 8080,在浏览器中访问 http://localhost:8080/hello
,就可以看到返回的 "Hello World" 结果了。
4. 为控制器添加统一前缀
如果想给这个类的所有请求都添加一个统一的前缀,可以在类上面使用 @RequestMapping
:
java
@RestController
@RequestMapping("/api")
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}
重启后,访问路径变为 http://localhost:8080/api/hello
。
5. 全局路径配置
如果想给整个项目的所有请求添加统一前缀,可以在 application.yml 配置文件中进行统一配置:
yaml
server:
servlet:
context-path: /app
重启后,访问路径变为 http://localhost:8080/app/api/hello
。
6. 修改服务器端口
同样在配置文件中,可以修改项目的端口:
yaml
server:
port: 9090
servlet:
context-path: /app
重启后,访问地址变为 http://localhost:9090/app/api/hello
。
总结
本期视频主要讲解了:
- Spring Boot 如何引入 Spring MVC
- Spring MVC 中几个常见的注解
- 如何通过配置文件对项目进行配置
- 实现了第一个请求映射方法
总体上,Spring Boot 大大简化了 Spring MVC 的配置和使用,让开发者能够更专注于业务逻辑的实现。