学完 Spring Boot 再看 FastAPI,我破防了
学完 Spring Boot 再看 FastAPI我破防了撸了两年 Spring Boot自认为后端功力还行。上周心血来潮打开 FastAPI 官方文档15 分钟后我沉默了。不是它太难而是太简单了。简单到让我怀疑自己这些年到底在干什么。这不是一篇踩一捧一的文章。Spring Boot 是我的启蒙框架教会了我工程化思维。但有些话不吐不快。一、Hello World 对比——第一刀就破防Spring Boot 的第一行代码RestController RequestMapping(/api) public class HelloController { GetMapping(/hello/{name}) public String sayHello(PathVariable String name) { return Hello, name !; } }写这一行之前你要经历什么建 Maven 项目、配 pom.xml、等依赖下载、写启动类、配 application.yml……等你跑起来半小时过去了。FastAPI 呢from fastapi import FastAPI app FastAPI() app.get(/api/hello/{name}) def say_hello(name: str): return fHello, {name}!pip install fastapi → 写 5 行代码 → uvicorn main:app --reload → 浏览器打开搞定。破防点Spring Boot 的启动类还没写完FastAPI 已经能调了。而且 FastAPI 自带 /docs 页面Swagger UI 直接生成不用配任何东西。Spring Boot 接 Swagger 的经历懂的都懂。二、依赖注入——Spring 的重器 vs FastAPI 的轻拳Spring 的依赖注入是它的灵魂也是它的包袱。Service public class UserService { Autowired private UserRepository userRepository; public ListUser getUsers() { return userRepository.findAll(); } }Service Autowired ComponentScan 配置扫描路径……Spring 的 IoC 容器确实强大但学 Spring 的人一半时间在理解容器是怎么工作的。FastAPI 的依赖注入完全不同from fastapi import Depends def get_db(): db Database() try: yield db finally: db.close() app.get(/users) def get_users(db: Database Depends(get_db)): return db.query_all()显式声明、一目了然、没有黑魔法。Depends() 直接把依赖链甩在参数里谁依赖谁一眼看穿。破防点在 Spring 里学会的 DI到了 FastAPI 发现原来可以这么简单。不是 Spring 不好是 FastAPI 让你意识到 DI 本身不需要那么复杂。三、数据校验——JPA 的痛 vs Pydantic 的爽写过 Spring Boot 的都知道一个 DTO 类有多酸爽public class UserDVO { NotNull(message 名称不能为空) Size(min 2, max 20) private String name; Email private String email; Pattern(regexp ^1[3-9]\\d{9}$) private String phone; // 构造方法 public UserDVO() {} // getter/setter x 6 public String getName() { return name; } public void setName(String name) { this.name name; } public String getEmail() { return email; } public void setEmail(String email) { this.email email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone phone; } }30 行起步还只是最基本的 Bean Validation。加上 Swagger 注解50 行起步。FastAPI 的 Pydanticfrom pydantic import BaseModel, EmailStr, Field class UserDTO(BaseModel): name: str Field(min_length2, max_length20) email: EmailStr phone: str Field(patternr^1[3-9]\\d{9}$)10 行搞定。校验、类型提示、序列化、文档生成全自动。最重要的是不用写 getter/setter。不用写构造方法。不用配 toString。Python 的数据类天然就是 DTO。破防点Java 写 DTO 等于加班Python 写 DTO 等于顺便。四、异步编程——补丁 vs 原生Java 的异步之路一部打补丁的历史1.0同步阻塞1.5java.util.concurrent Future1.8CompletableFuture21虚拟线程终于像个样子了写个异步接口GetMapping(/users/{id}) public CompletableFutureUser getUser(PathVariable Long id) { return CompletableFuture.supplyAsync(() - userService.findById(id)); }CompletableFuture、线程池、ExecutorService、Future 链……光异常传播就能写一篇文章。FastAPI 的异步app.get(/users/{id}) async def get_user(id: int): user await db.fetch_one(SELECT * FROM users WHERE id ?, (id,)) return userasync def await语言原生的异步支持。不用学 Reactor、不用理解 Mono/Flux写出来的代码跟同步几乎没有区别。破防点在 Java 里搞异步像在考试在 FastAPI 里搞异步像在摸鱼。五、中间件——仪式感 vs 实用主义Spring Boot 的拦截器Component public class LogInterceptor implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { System.out.println(请求: request.getMethod() request.getRequestURI()); return true; } }还要注册Configuration public class WebConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()) .addPathPatterns(/api/**); } }接口、实现类、注册配置三步一个不能少。FastAPIapp.middleware(http) async def log_requests(request: Request, call_next): print(f请求: {request.method} {request.url}) return await call_next(request)一个装饰器搞定。破防点一个 app.middleware 的事Spring 要我写三个文件。六、项目结构——约定 vs 自由Spring Boot 推荐的项目结构src/main/java/com/example/demo/ ├── controller/ ├── service/ ├── repository/ ├── dto/ ├── config/ ├── exception/ ├── entity/ └── DemoApplication.java不是说这个结构不好而是只能这样。社区规范、团队约定、框架要求你没得选。FastAPImyapp/ ├── main.py ├── routers/ ├── models.py └── schemas.py想拆就拆想合就合。小项目一个 main.py 搞定大项目慢慢拆模块。没人管你。破防点Spring Boot 的规范是好规范但有时候我就想要随便放的自由。七、这不是终点是选择写到最后我想说点真心话。Spring Boot 教会了我太多东西分层架构——Controller/Service/Repository 各司其职依赖注入——理解什么是 IoC、什么是控制反转面向接口编程——不仅仅是一种技术更是一种思维方式工程化思维——测试、部署、监控一个完整的后端生态这些经验是无价的。FastAPI 则让我重新审视自己同样一个 CRUD API代码量减少 70%自动生成 API 文档不用额外写一行配置类型提示 Pydantic 编辑器补全直接起飞原生异步性能不输 Node.js它们不是替代关系是互补关系。大型企业项目、复杂业务、团队协作Spring Boot 依然是王者。快糙猛的原型、个人项目、AI 服务FastAPI 让你爽到飞起。最后送大家一句话学完 Spring Boot 再看 FastAPI我破防的不是技术而是发现自己被 Java 惯坏了——习惯了复杂忘记了简单也是一种能力。

相关新闻

Anthropic Claude Code 研究解读:Agent 编程时代,专业判断为什么更值钱了

Anthropic Claude Code 研究解读:Agent 编程时代,专业判断为什么更值钱了

摘要:Anthropic 在 2026 年 6 月 16 日发布了对约 40 万个 Claude Code 交互会话的隐私保护分析,试图回答一个很现实的问题:当编码 Agent 能读文件、改代码、跑命令、提交结果时,人类的专业能力还重要吗?结论很有意思&…

2026/6/18 12:03:21阅读更多 →
Voohu:车载以太网1000BASE-T1共模扼流圈的宽带阻抗匹配与信号完整性设计

Voohu:车载以太网1000BASE-T1共模扼流圈的宽带阻抗匹配与信号完整性设计

车载以太网1000BASE-T1采用单对非屏蔽双绞线(UTP)实现1Gbps全双工传输,工作频率高达600MHz。共模扼流圈(CMC)是抑制共模噪声、保证信号完整性的关键元件,需在宽频带内提供足够的共模阻抗,同时最…

2026/6/18 12:03:21阅读更多 →
“电商的‘王牌’TMS,为何到了医药行业就成了‘废铁’?”

“电商的‘王牌’TMS,为何到了医药行业就成了‘废铁’?”

在运输管理系统(TMS)的选型讨论中,一个经常被忽略的问题——TMS的行业适配性到底重不重要? 答案是:极其重要,而且不同行业之间的功能差异远比想象中更大。 很多企业选型时,倾向于寻找“功能最…

2026/6/18 12:03:21阅读更多 →
UUID主键的深分页如何解决?

UUID主键的深分页如何解决?

传统的深分页优化(游标分页)核心原理是 WHERE id > 上一页最后的id 。但 UUID 是随机无序的字符串,如果直接用它做比较,查出来的数据顺序是乱的,会导致分页数据重复或遗漏。怎么优化?(3种实…

2026/6/18 13:09:32阅读更多 →
Bootstrap Icons 终极指南:2000+免费SVG图标库的完整使用方法

Bootstrap Icons 终极指南:2000+免费SVG图标库的完整使用方法

Bootstrap Icons 终极指南:2000免费SVG图标库的完整使用方法 【免费下载链接】icons Official open source SVG icon library for Bootstrap. 项目地址: https://gitcode.com/gh_mirrors/ic/icons Bootstrap Icons 是 Bootstrap 官方推出的开源SVG图标库&…

2026/6/18 13:09:32阅读更多 →
i.MX平台GStreamer硬件加速实战:从VPU解码到多路合成

i.MX平台GStreamer硬件加速实战:从VPU解码到多路合成

1. 项目概述与核心价值在嵌入式多媒体应用开发中,性能与功耗的平衡是永恒的挑战。当你在i.MX这类高性能异构计算平台上处理1080p甚至4K视频流时,如果仅依赖CPU进行软解码,不仅会迅速耗尽系统资源,导致帧率下降、音频卡顿&#xff…

2026/6/18 13:09:32阅读更多 →
QuPath终极指南:三步掌握免费开源生物图像分析技术

QuPath终极指南:三步掌握免费开源生物图像分析技术

QuPath终极指南:三步掌握免费开源生物图像分析技术 【免费下载链接】qupath QuPath - Open-source bioimage analysis for research 项目地址: https://gitcode.com/gh_mirrors/qu/qupath QuPath是一款功能强大的开源生物图像分析软件,专门为数字…

2026/6/18 13:09:32阅读更多 →
考软考中项报培训班一般多少钱?哪家性价比高

考软考中项报培训班一般多少钱?哪家性价比高

前言 在信息技术与项目管理深度融合的趋势下,系统集成项目管理师认证已成为衡量IT项目管理人才专业能力的核心标尺之一。该认证由人力资源和社会保障部、工业和信息化部联合组织,其权威性与专业性在行业内得到了广泛认可。随着市场需求的持续攀升&#x…

2026/6/18 13:09:32阅读更多 →
效率突围|okbiye AI PPT生成:打破模板固化,解锁全场景无门槛演示创作

效率突围|okbiye AI PPT生成:打破模板固化,解锁全场景无门槛演示创作

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPTAI PPT制作 - Okbiye智能写作https://www.okbiye.com/ppt 在学习和办公的日常里,PPT从来都不是简单的图文拼接,而是成果输出、观点表达、场景汇报的核心载体。但绝大多数人做PPT…

2026/6/18 13:04:27阅读更多 →
ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

1. ZigBee HA:智能家居的“通用语言”与开发基石如果你正在或计划踏入智能家居设备开发领域,尤其是基于ZigBee协议,那么“ZigBee Home Automation”这个名词你一定不陌生。它不仅仅是ZigBee联盟定义的一套应用层规范,更是确保不同…

2026/6/18 0:00:24阅读更多 →
Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/18 0:00:24阅读更多 →
JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

1. 项目概述在嵌入式开发领域,尤其是基于NXP JN517x这类无线微控制器的项目中,系统稳定性和与外设的可靠交互是两大核心挑战。前者关乎产品能否在无人值守的复杂环境中长期运行,后者则决定了设备能否准确感知世界并与其他芯片“对话”。JN517…

2026/6/18 0:00:24阅读更多 →