🐸 青蛙编程网
首页 / Java / Spring Boot / 1. 框架是什么

框架是什么:从手写到 Spring Boot

这是什么:框架(Framework) = 别人替你搭好架子、写好零件,你只管往里填自己那部分代码的套路;本章主角是 Spring Boot。

为什么用:上一板块的面向对象让我们学会了把代码组织成类和对象,但离「写出跑在网页上的程序」还差一步——服务器怎么起、路由怎么配、依赖怎么装,全是重复劳动。磨刀不误砍柴工,这章的概念想通了,后面六章的每一步你都知道「为什么」。

如何用:本章先讲清框架和库差在哪一个字,再把 Spring Boot 拆成「Spring + 自动配置 + 内嵌服务器」三块,最后跟 Flask 比一比。

为什么需要框架:别重复造轮子

设想你要做一个网站。除了业务本身(比如"展示留言"),你还得处理一大堆和业务无关的杂活:监听端口、解析 HTTP 请求、判断用户访问的是哪个网址、把结果按 HTTP 格式返回、出错时给出友好提示……

把这份"杂活清单"摊开看看有多长:

杂活 具体要干什么
网络监听 盯着 8080 端口,别错过任何请求
解析请求 把浏览器发来的 HTTP 报文拆成"访问了哪个网址、带了什么参数"
路由分发 按网址找到该处理它的那段代码
组装响应 把处理结果按 HTTP 格式包好、填上状态码发回去
异常兜底 出错时返回友好页面,而不是让浏览器收到一坨乱码
资源管理 线程池、连接、内存,用完要回收,不能越用越漏

这些活每个网站都要干,干法还大同小异。如果每做一个项目都从零写一遍,就像每次盖房都先自己烧砖——框架就是别人烧好的砖。而且烧砖的工匠见多识广:你闭门造车写出的网络代码,可能漏掉成百上千种边角情况,框架早就替你踩过一遍坑。

框架(Framework)= 别人写好的半成品 + 一套使用约定。 你往骨架里填业务代码,杂活它全包。前面学过的 ArrayList 是一个"轮子",而框架是把 Web 开发要用的轮子打包好的"整套工具箱"。

框架和库,差在一个字

你可能听过另一个词"库(library)"——ArrayList、Scanner 都是库。框架和库都是别人写好的代码,区别在谁说了算:

对比项 库 框架
关系 你写主程序,来调用库 框架写主流程,来调用你的代码
控制权 在你手里 在框架手里
类比 你做菜,盐糖随便放 你进中央厨房,按它的流程出餐
例子 ArrayList、Scanner Spring Boot、Django

这个"控制权反转给框架"的特点,术语叫控制反转(IoC,Inversion of Control)——你按框架的约定写好零件,框架负责在合适的时机来调用。第一次听必然发懵,后面章节写代码时你会反复体会到:"咦,我没写 main 循环啊,谁在调我的方法?"——就是框架。现在只需记住这个词,混个脸熟。

Spring 生态一句话

Java 世界的框架之王叫 Spring——企业级开发的事实标准,全家桶式生态,各个成员各管一摊:

成员 管什么 一句话理解
Spring 容器 创建和管理对象 面向对象里"new 对象"的升级版,对象交给框架管
Spring MVC 处理网页请求 "网址 → 方法"的调度中心
Spring Data 操作数据库 增删改查不用手写大量模板代码
Spring Security 管登录鉴权 谁能进哪个门,它说了算
Spring Boot 快速起步 把上面全家桶自动组装好的"一键启动版"

第一次见不用记住每个成员,只要有个印象:Spring 是一棵大树,Spring Boot 是它最好爬的那根主干——本系列教程走的正是这根主干。

Spring Boot = Spring + 自动配置 + 内嵌服务器

老 Spring 有个痛点:配置太繁。启动前要写一堆 XML 告诉框架怎么干活,部署还得单独装一个 Tomcat 服务器。Spring Boot 是 Spring 官方的"开箱即用"版:

  • 自动配置:常见搭配它全猜得到,配置少写 90%
  • 内嵌服务器:Tomcat 直接打包进项目,main 方法一跑,网站就起来了
  • 起步依赖:想用 Web 功能?勾一个选项,相关 jar 包全部自动到位

新老搭配直观感受一下:

要干的事 老 Spring Spring Boot
装服务器 单独下载安装 Tomcat,再部署上去 内嵌好了,跑 main 就行
声明功能 手写大段 XML 配置 勾一个起步依赖
集成第三方 挨个调版本、写配置 版本搭配官方已调好
项目启动 配置错了半天起不来 约定齐全,基本开箱就跑

这就是它成为 Java Web 入门首选的原因。

提前剧透:对象交给管家管

还记得面向对象里我们亲手 new Dog(...) 吗?到了 Spring 的世界里,大部分对象不用你自己 new——你告诉 Spring"有这么一个类",它负责创建、装配、按需递给你。这种把"造对象"的活交出去的做法,正是前面说的控制反转最典型的落地。

再配上 Spring Boot 的自动配置:你勾了 Web 功能,它就自动把内嵌服务器、请求解析这些零件装好;你写了控制器,它就自动把路由挂上。你声明"要什么",框架决定"怎么做"——理解了这句话,下一章跑通第一个应用时,你会对"为什么代码这么少"心里有数。也不用担心"交出去会不会失控":管家的每一步都有日志可查、有配置可改,学习的路子是先享受便利,再逐步深入它的内部。

和 Flask 比一比

学过 Python 的 Flask?Spring Boot 就是它的"重量级亲戚"——对比着学,两边都更牢固:

对比项 Flask(Python) Spring Boot(Java)
定位 轻量微框架,几行代码起步 全家桶框架,开箱即用
哲学 极简,功能靠扩展拼装 约定优于配置,常用功能全配好
Web 服务器 自带开发服务器 内嵌 Tomcat
依赖管理 pip + requirements.txt Maven + pom.xml
常见舞台 小工具、原型、脚本配套 企业级后端、微服务

共同点也很大:都是「网址 → 函数」的思路。Flask 里叫路由装饰器 @app.route,Spring Boot 里叫注解 @GetMapping——下一章就上手。思路既然相通,学过 Flask 的读者可以把后面六章的每个知识点都在脑子里"翻译"回 Flask 对应的做法,迁移学习效率翻倍。

差别主要体现在"分量"上:Flask 像一辆自行车,轻便灵活,配件自己挑;Spring Boot 像一辆整车出厂的汽车,重一些,但空调、安全气囊一应俱全,开起来省心。小工具选自行车,企业项目上汽车——没有谁更好,只有合不合适。本系列选 Spring Boot,因为它是就业市场的主流,也因为它"约定优于配置"的思路能让你少踩无数坑。

❓ 常见问题

Q1:框架这么好,还要先学 Java 基础和面向对象吗?

必须要。框架是"烧好的砖",但砌墙的手艺还是你的:不懂类和对象,看不懂控制器的代码结构;不懂集合,接不住框架传来的数据。框架放大能力,不替代基础——这也是本系列把面向对象放在 Web 前面的原因。

Q2:Spring、Spring MVC、Spring Boot 到底什么关系?

一句话:Spring 是全家桶总称;Spring MVC 是全家桶里管网页请求的那一件;Spring Boot 是把全家桶快速组装起来的启动器。写代码时三者天天见面,但概念上记住"Boot 负责组装,MVC 负责接客"就够入门了。

Q3:前端框架(如 Vue)也是这种"框架"吗?

思路相通(也是别人搭骨架你填内容),但管的地盘不同:Vue 管浏览器里的页面交互,Spring Boot 管服务器端的数据和逻辑。本系列先打后端地基,将来前后端一握手,整条链路就通了。

📝 本章小结

  • 框架 = 别人写好的半成品 + 一套使用约定;监听端口、解析请求这些杂活它全包
  • 框架和库的核心区别是控制权:你调用库,框架调用你(控制反转 IoC)
  • Spring 是 Java 生态的框架之王;Spring Boot 是它的开箱即用版:自动配置 + 内嵌服务器 + 起步依赖
  • 和 Flask 同走「网址 → 方法」的路子,但 Spring Boot 分量更重、配套更全,适合企业级项目
  • 框架放大你的能力,但替代不了面向对象和集合这些基础
  • 下一步动作很简单:打开 start.spring.io 亲手生成一个项目,概念立刻落地
  • 记忆口诀:杂活交给框架干,Spring 管家说了算;Boot 自动配置加内嵌,一条命令跑网站。

动手改

  1. 打开 start.spring.io(下一章的主角),只看不点,认认界面上有哪些选项
  2. 想一个你常用的网站(比如购物站),列出它背后至少 3 件"和业务无关的杂活"
  3. 回顾 面向对象 里的 ArrayList:它和"框架"在"别重复造轮子"上有什么相同与不同?

下一章:环境搭建与第一个应用,让 Spring Boot 真的跑起来 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。