news 2026/5/1 5:07:25

快学快用系列:一文学会java后端WebApi开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
快学快用系列:一文学会java后端WebApi开发

快学快用系列:一文学会 Java 后端 Web API 开发(2026 年实用版)

目标读者:有 Java 基础(会写类、接口、集合),想快速上手企业级 RESTful API 开发的同学。
核心技术栈:Spring Boot 3.3.x / 3.4.x(2026 年主流版本) + Maven + Lombok + MyBatis-Plus(可选) + Knife4j / SpringDoc OpenAPI。

全文目标:1–2 小时读完 + 2–4 小时上手敲完第一个完整 CRUD 接口

一、为什么现在学 Spring Boot 做 Web API 最香?

维度Spring Boot 3.x(2026)传统 SSM / Spring MVC
启动速度秒级(devtools + GraalVM Native 支持更好)几十秒
配置量几乎 0 配置(自动配置 + 约定优于配置)XML + 大量注解
学习曲线低(一个 @RestController 就能起接口)中高
生态成熟度极高(Spring 官方 + Alibaba + Baomidou 等)老项目遗留
部署方式JAR / Docker / Native Image / K8sWAR / Tomcat
主流公司使用率90%+ 新项目维护老项目

一句话:现在不学 Spring Boot 做后端 API,等于在用拨号上网写代码

二、环境准备(10 分钟搞定)

  1. JDK:JDK 21(LTS)或 JDK 17(企业最稳)
    官网下载或 sdkman / asdf / jenv 安装

  2. IDE:IntelliJ IDEA Ultimate / Community 2024.x+(强烈推荐)
    或 VS Code + Extension Pack for Java

  3. 构建工具:Maven 3.9.x(主流)或 Gradle 8.x(越来越多人用)

  4. 常用插件(IDEA 必装):

    • Lombok
    • Spring Boot
    • Maven Helper
    • GitToolBox(可选)

三、最快创建 Spring Boot 项目(官网 / IDEA / 命令行 三选一)

方式一:Spring Initializr(最推荐)
https://start.spring.io/

推荐配置(2026 年最常用组合):

  • Project:Maven
  • Language:Java
  • Spring Boot:3.3.x 或 3.4.x(选最新稳定版)
  • Group:com.example
  • Artifact:demo-api
  • Name:demo-api
  • Package name:com.example.demo
  • Java:21 或 17
  • Dependencies(至少选这几个):
    • Spring Web
    • Spring Boot DevTools(热部署)
    • Lombok
    • Spring Boot Actuator(监控)
    • Validation(参数校验)
    • SpringDoc OpenAPI(推荐,代替 Swagger)
    • (可选)MyBatis Plus + MySQL Driver + druid(数据库)

点击 Generate → 解压 → IDEA 打开

方式二:IDEA 一键创建
File → New → Project → Spring Initializr → 同上配置

四、第一个 REST API(Hello World 级)

  1. 创建 Controller
packagecom.example.demo.controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api/v1")publicclassHelloController{@GetMapping("/hello")publicStringhello(){return"Hello, Spring Boot 3 API! (2026)";}@GetMapping("/ping")publicStringping(){return"pong";}}
  1. 启动项目
  • IDEA 右上角绿色三角 → Run DemoApiApplication
  • 或命令行:mvn spring-boot:run
  1. 测试接口

浏览器 / Postman / curl:

  • http://localhost:8080/api/v1/hello
    → Hello, Spring Boot 3 API! (2026)

  • http://localhost:8080/api/v1/ping
    → pong

五、完整 CRUD 示例(用户管理)

目标:实现用户增删改查 + 分页 + 参数校验 + 统一响应

  1. 依赖补充(pom.xml)
<!-- 已包含 Spring Web + Lombok + Validation --><!-- 推荐加这些(生产级) --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.6.0</version><!-- 2026 最新稳定 --></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.9</version><!-- 或最新 --></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.23</version></dependency>
  1. 统一响应类(R.java)
packagecom.example.demo.common;importlombok.Data;@DatapublicclassR<T>{privateintcode;privateStringmsg;privateTdata;publicstatic<T>R<T>ok(Tdata){R<T>r=newR<>();r.setCode(200);r.setMsg("success");r.setData(data);returnr;}publicstatic<T>R<T>ok(){returnok(null);}publicstatic<T>R<T>error(intcode,Stringmsg){R<T>r=newR<>();r.setCode(code);r.setMsg(msg);returnr;}}
  1. 实体类(User.java)
packagecom.example.demo.entity;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importlombok.Data;importjakarta.validation.constraints.NotBlank;importjakarta.validation.constraints.Size;@DatapublicclassUser{@TableId(type=IdType.AUTO)privateLongid;@NotBlank(message="用户名不能为空")@Size(min=3,max=20,message="用户名长度 3-20")privateStringusername;privateStringemail;privateIntegerage;}
  1. Controller(UserController.java)
packagecom.example.demo.controller;importcom.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;importcom.baomidou.mybatisplus.extension.plugins.pagination.Page;importcom.example.demo.common.R;importcom.example.demo.entity.User;importcom.example.demo.service.UserService;importjakarta.validation.Valid;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;@RestController@RequestMapping("/api/v1/users")publicclassUserController{@AutowiredprivateUserServiceuserService;// 新增@PostMappingpublicR<User>create(@RequestBody@ValidUseruser){userService.save(user);returnR.ok(user);}// 修改@PutMapping("/{id}")publicR<User>update(@PathVariableLongid,@RequestBody@ValidUseruser){user.setId(id);userService.updateById(user);returnR.ok(user);}// 删除@DeleteMapping("/{id}")publicR<Void>delete(@PathVariableLongid){userService.removeById(id);returnR.ok();}// 查询单个@GetMapping("/{id}")publicR<User>getById(@PathVariableLongid){returnR.ok(userService.getById(id));}// 分页查询@GetMappingpublicR<Page<User>>page(@RequestParam(defaultValue="1")intpage,@RequestParam(defaultValue="10")intsize,@RequestParam(required=false)Stringusername){Page<User>pageObj=newPage<>(page,size);LambdaQueryWrapper<User>wrapper=newLambdaQueryWrapper<>();wrapper.like(username!=null,User::getUsername,username);wrapper.orderByDesc(User::getId);returnR.ok(userService.page(pageObj,wrapper));}}
  1. Service & Mapper(MyBatis-Plus 风格)
// UserMapper.javapackagecom.example.demo.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.example.demo.entity.User;publicinterfaceUserMapperextendsBaseMapper<User>{}// UserService.javapackagecom.example.demo.service;importcom.baomidou.mybatisplus.extension.service.IService;importcom.example.demo.entity.User;publicinterfaceUserServiceextendsIService<User>{}// UserServiceImpl.javapackagecom.example.demo.service.impl;importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importcom.example.demo.entity.User;importcom.example.demo.mapper.UserMapper;importcom.example.demo.service.UserService;importorg.springframework.stereotype.Service;@ServicepublicclassUserServiceImplextendsServiceImpl<UserMapper,User>implementsUserService{}
  1. application.yml(基础配置)
server:port:8080spring:datasource:url:jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghaiusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Drivertype:com.alibaba.druid.pool.DruidDataSourcemybatis-plus:configuration:map-underscore-to-camel-case:trueglobal-config:db-config:id-type:auto
  1. 访问接口文档(Knife4j / SpringDoc)

启动后浏览器打开:

  • http://localhost:8080/swagger-ui.html (SpringDoc 默认)
  • 或 http://localhost:8080/doc.html (如果用了 Knife4j)

六、2026 年生产级最佳实践(快速记忆版)

  1. 统一响应→ 全局 R 或 Result
  2. 全局异常→ @ControllerAdvice + @ExceptionHandler
  3. 参数校验→ @Valid + BindingResult 或 @Validated
  4. 日志→ SLF4J + Logback / Log4j2(结构化 JSON 推荐)
  5. 接口文档→ SpringDoc OpenAPI 3(取代 Swagger2)
  6. 安全→ Spring Security + JWT(前后端分离标配)
  7. 分页→ MyBatis-Plus Page 或 PageHelper
  8. 跨域→ @CrossOrigin 或 WebMvcConfigurer
  9. 热部署→ DevTools(开发神器)
  10. 监控→ Actuator + Micrometer + Prometheus

七、下一阶段速成路线(建议顺序)

  1. 完成上面 CRUD(2 小时)
  2. 加全局异常处理 + 统一响应(30 分钟)
  3. 集成 Knife4j + 接口文档美化(30 分钟)
  4. 加 JWT 登录认证(1–2 小时)
  5. 连接真实数据库 + MyBatis-Plus 代码生成器(1 小时)
  6. Docker 打包 + 部署(30 分钟)

一句话总结

2026 年最快的 Java Web API 开发路径:Spring Boot 3 + Spring Web + Lombok + MyBatis-Plus + SpringDoc → 30 分钟起接口,2 小时出完整 CRUD

有任何一步卡住了(比如依赖冲突、MySQL 连不上、校验不生效),直接把报错贴出来,我帮你秒 debug。

现在就去 start.spring.io 创建项目吧!冲~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:59:42

【MySQL】内置函数和内外连

MySQL 内置函数 内外连接 超实用总结&#xff08;2026 面试生产必备&#xff09; 一、MySQL 最常用内置函数&#xff08;背会这 50 个&#xff0c;够用 99% 场景&#xff09; 1. 字符串函数&#xff08;最常用 TOP10&#xff09; 函数说明示例结果CONCAT(str1,str2,…)拼接…

作者头像 李华
网站建设 2026/4/27 12:02:41

Live Avatar GitHub项目结构:CLAUDE.md与todo文件用途说明

Live Avatar GitHub项目结构&#xff1a;CLAUDE.md与todo文件用途说明 1. 项目背景与定位 Live Avatar是由阿里联合高校开源的数字人生成模型&#xff0c;聚焦于高质量、低延迟的实时数字人视频合成。它不是简单的图像驱动或音频驱动动画工具&#xff0c;而是一个融合文本理解…

作者头像 李华
网站建设 2026/4/12 21:16:14

5分钟快速原型:用快马构建API测试工具MVP

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个最小可行API测试工具原型&#xff0c;要求&#xff1a;1. 支持GET/POST请求 2. 简单参数输入 3. 响应展示 4. 历史记录 5. 一键分享功能。使用纯前端实现&#xff0c;…

作者头像 李华
网站建设 2026/5/1 2:40:30

企业级应用中处理GPG签名验证失败的实战案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业级应用案例&#xff0c;展示如何处理GPG签名验证失败问题。案例应包括&#xff1a;1) 问题描述和错误日志&#xff1b;2) 分析缺失的公钥来源&#xff1b;3) 从企业内…

作者头像 李华
网站建设 2026/4/23 10:01:03

5分钟快速搭建:Ubuntu Samba最小化可行配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个极简Ubuntu Samba快速部署工具&#xff0c;功能&#xff1a;1. 最小化安装选项&#xff08;仅安装必需组件&#xff09;2. 单命令完成部署 3. 自动生成随机共享密码 4. 临…

作者头像 李华