"大翔在飞翔科技的技术选型会上说:'我们要找一个能让代码解耦、让测试变简单的框架。'白歌推荐了 Spring。这一章,你将理解白歌为什么做此推荐,以及 Spring 最核心的'容器'思想。"
Spring 概述与 IoC 容器
本章定位
本章解决的核心问题:Spring 是什么,以及它如何通过 IoC 容器将对象的创建权从程序员手中反转给框架,从而实现解耦。
学习路线图
学习顺序说明:先建立 Spring 全局认知 → 理解 IoC/DI 核心思想 → 掌握三类核心 stereotype 注解 → 学习配置类与扫描机制 → 深入模块化配置与外部化配置 → 最后掌握多环境切换。
文件关系说明
| 文件 | 一句话角色 |
|---|---|
Spring Framework 概述.md | 飞翔科技技术选型会的背景板,回答"为什么选 Spring"。 |
IoC 与 DI 核心概念.md | 本章灵魂文件,理解"控制反转"与"依赖注入"的哲学。 |
Component.md | 通用组件注解,IoC 容器识别 Bean 的"身份证"。 |
Service.md | 业务层组件注解,小崔写 Service 层时最常用的标记。 |
Repository.md | 数据层组件注解,标记 DAO/数据访问组件。 |
Configuration.md | 配置类注解,替代 XML 的 JavaConfig 核心入口。 |
ComponentScan.md | 自动扫描注解,让容器自动发现@Component及其派生注解。 |
Import.md | 模块化配置注解,将多个配置类组装成整体。 |
PropertySource.md | 外部化配置注解,将数据库密码等配置从代码中剥离。 |
Profile.md | 多环境切换注解,李眉部署时区分 dev/test/prod 的利器。 |
知识图谱
核心逻辑:IoC 是思想,DI 是实现手段;@Component及其派生注解定义 Bean 身份;@Configuration + @ComponentScan 构建容器;@Import、@PropertySource、@Profile 解决模块化、外部化、多环境三大工程问题。
与下一章的衔接
本章学完后,你已经理解了容器如何识别和收纳 Bean。下一章「Bean 的定义与依赖注入」将解决:容器收纳 Bean 之后,如何精确地装配它们之间的依赖关系——小崔的 Service 如何自动拿到 Repository 实例?当存在多个同类型 Bean 时如何选择?这些正是 @Autowired、@Qualifier、@Primary 等注解要回答的问题。