Spring Boot,整合 Spring MVC,实现第一个 API 接口

前言

如何使用 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 的配置和使用,让开发者能够更专注于业务逻辑的实现。

相关推荐
AskHarries1 小时前
文件上传系统
后端
止语Lab2 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活2 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困2 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn2 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
用户298698530142 小时前
Python 实现 Excel 与 Markdown 互转的实用指南
后端·python·excel
用户77283104908402 小时前
krono-job:零侵入、单二进制交付的分布式任务调度平台(开源)
后端
Conan在掘金2 小时前
鸿蒙报错速查:Function lacks ending return statement,返回路径漏 return 就炸,根因 + 真解法
后端
人间凡尔赛3 小时前
AI-Native 云原生架构:2026 年从容器编排到智能体编排的范式革命
后端·云原生·架构
IT_陈寒3 小时前
Vue的响应式让我加班到凌晨3点,原来问题出在这
前端·人工智能·后端