1. 框架革命:Spring Boot 快速入门¶
本节目标
在第二章,我们像“原始人”一样,徒手搓出了 Servlet、配置了 Tomcat、手动管理了 JDBC 连接。
虽然原理懂了,但你一定想吐槽:“配置太麻烦了!代码太啰嗦了!”
欢迎来到 Spring Boot 的时代。如果说 Servlet 是手工刀耕火种,那么 Spring Boot 就是全自动流水线。本节我们将体验“开箱即用”的快乐,并接触 Spring 的灵魂思想——IOC (控制反转)。
🤯 第一步:为什么是 Spring Boot?¶
1. 传统开发的痛点 (Servlet/SSM)¶
回忆一下你在第二章受的苦:
* 😫 配置地狱:web.xml 写错一行,服务器就启动不了。
* 😫 依赖冲突:Jar 包版本打架,ClassNotFoundException 让你怀疑人生。
* 😫 部署繁琐:必须安装 Tomcat,把 war 包扔进去才能跑。
2. Spring Boot 的魔法¶
Spring Boot 不是一门新技术,它是一个“脚手架”,旨在简化 Spring 应用的初始搭建和开发过程。
- 自动配置 (Auto Configuration):不需要写 XML,它根据你引入的 Jar 包自动配置好 Bean。
- 起步依赖 (Starters):一个
spring-boot-starter-web就把 Tomcat、Jackson、Spring MVC 全带进来了。 - 内嵌容器:自带 Tomcat,直接运行
main方法就能启动服务器。
🚀 第二步:Hello Spring Boot¶
让我们在 1 分钟内创建一个 Web 服务器。
1. 使用 Spring Initializr 创建项目¶
打开 IDEA,选择 New Project -> Spring Initializr (或访问 start.spring.io):
- Name:
demo-boot - Language:
Java - Type:
Maven - Java:
17 - Dependencies (重点): 勾选 Spring Web 和 Lombok。
2. 核心文件解密¶
3. 写个接口试试¶
新建 HelloController.java:
运行 main 方法,访问 http://localhost:8080/hello。没有 web.xml,没有 Tomcat 配置,一切就是这么简单!
🧠 第三步:核心思想 - IOC 与 DI¶
Spring 的核心不是代码,而是思想。最著名的就是 IOC (Inversion of Control,控制反转)。
1. 什么是控制反转?¶
- 传统方式 (主动):
我要吃饭,必须自己买菜、自己做。
UserDao dao = new UserDao(); // 我自己创建对象 - IOC 方式 (被动):
我要吃饭,直接告诉管家(Spring 容器),管家做好后端给我。
@Autowired private UserDao dao; // Spring 帮我创建并注入
控制权从“程序员手动 new”反转到了“Spring 容器自动管理”。
2. 核心注解实战¶
@Component(或@Service,@Controller): 贴标签。告诉 Spring:“这个类归你管,请把它加入 IOC 容器(Bean)”。@Autowired: 伸手要。告诉 Spring:“我这里需要一个对象,请从容器里拿一个给我”。
graph LR
subgraph "Spring IOC 容器 (大管家)"
DaoBean["UserDao 对象<br/>(@Component)"]
ServiceBean["UserService 对象<br/>(@Service)"]
end
Code["你的代码"] -- "@Autowired" --> ServiceBean
ServiceBean -- "@Autowired" --> DaoBean
style DaoBean fill:#fff9c4,stroke:#fbc02d
style ServiceBean fill:#e1f5fe,stroke:#01579b
3. 代码对比¶
🤖 第四步:AI 辅助学习¶
IOC 的概念比较抽象,可以让 AI 给你举个生动的例子。
让 AI 解释 IOC
Prompt:
“我是 Java 初学者,请用‘去餐厅点餐’或者‘乐高积木’的比喻,通俗易懂地解释 Spring 的 IOC(控制反转)和 DI(依赖注入)是什么?并给出一段对比代码。”
让 AI 写代码
Prompt:
“请基于 Spring Boot 写一个简单的 Service 和 Controller。需求:Controller 调用 Service 的
sayHello()方法。请展示如何使用 @Service 和 @Autowired 注解。”
📝 总结¶
- Spring Boot 是 Spring 的“自动挡”,通过 Starter 和 自动配置 解决了依赖和配置痛点。
- IOC (控制反转):对象不由我们
new,而是交给 Spring 容器 管理。 - DI (依赖注入):通过
@Autowired自动获取容器中的对象。 - 核心注解:
@SpringBootApplication: 启动类。@RestController: 声明接口控制器。@Component/@Service: 注册 Bean。@Autowired: 注入 Bean。
下一步:
虽然我们已经成功启动了 Spring Boot,也体验了 @Autowired 的便利,但你心中一定有两个巨大的问号:
Spring 容器到底长什么样?它是怎么神奇地把对象“变”出来的?
下一节,我们将深入 Spring 的“灵魂”,揭开 IOC 容器 与 依赖注入 (DI) 的神秘面纱,真正读懂“控制反转”。