news 2026/10/26 21:32:21

快学快用系列:一文学会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/10/23 19:41:35

电商系统如何用ISTIO实现灰度发布

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个电商灰度发布演示系统&#xff0c;包含&#xff1a;1. 商品服务、订单服务、支付服务三个微服务 2. 使用ISTIO实现v1和v2版本的流量按比例分配 3. 集成Prometheus监控关键…

作者头像 李华
网站建设 2026/10/27 3:24:30

2026年的风口一定是LLM Agent,赶紧听劝!

介绍 《AI Agents》系统介绍了AI智能体的核心概念、架构设计与应用实践。全书通过丰富的示意图与案例&#xff0c;生动解析智能体如何感知、决策与交互&#xff0c;覆盖从基础模型到多智能体协作的前沿进展。无论是初学者还是开发者&#xff0c;都能通过本书快速理解智能体的运…

作者头像 李华
网站建设 2026/10/26 12:18:12

零配置启动TurboDiffusion,AI视频生成从此更简单

零配置启动TurboDiffusion&#xff0c;AI视频生成从此更简单 你有没有试过&#xff1a;写完一段提示词&#xff0c;点下“生成”&#xff0c;然后泡杯咖啡、刷会手机——回来发现进度条才走到12%&#xff1f; 或者&#xff0c;刚配好环境&#xff0c;显存就爆了&#xff0c;报…

作者头像 李华
网站建设 2026/10/26 10:11:04

Ubuntu+VSCode打造Python数据分析实战环境

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Python数据分析项目的VSCode环境配置指南。要求&#xff1a;1. 详细说明Ubuntu下Python环境安装&#xff1b;2. 配置VSCode的Python扩展&#xff1b;3. 集成Jupyter Noteb…

作者头像 李华
网站建设 2026/10/26 8:03:58

BERT模型如何做语法纠错?企业文档校对系统搭建教程

BERT模型如何做语法纠错&#xff1f;企业文档校对系统搭建教程 1. 从“填空游戏”开始理解BERT的纠错逻辑 你有没有试过这样改错&#xff1a;把句子中明显不对的词替换成 [MASK]&#xff0c;然后让AI猜它原本该是什么&#xff1f;比如—— “这个方案存在严重漏动问题” → “…

作者头像 李华
网站建设 2026/10/26 9:02:55

DeepSeek-R1-Distill-Qwen-1.5B应用场景:科研辅助系统部署

DeepSeek-R1-Distill-Qwen-1.5B应用场景&#xff1a;科研辅助系统部署 1. 这不是又一个“能写作文”的模型&#xff0c;而是你实验室里新来的推理搭档 你有没有过这样的时刻&#xff1a; 看着一篇数学证明卡在中间步骤&#xff0c;反复推导却找不到突破口&#xff1b;写Pyth…

作者头像 李华