Spring Boot 是 Spring 框架的简化版本,旨在帮助开发者快速创建独立、生产级的 Spring 应用。它通过“约定优于配置”的原则,大幅减少了配置工作,内置了嵌入式服务器(如 Tomcat),让应用可以“一键启动”。
Spring 和 Spring MVC 的整合(你的理解总结)
1. 核心容器:Spring IoC 容器(Map结构)
你描述得非常准确!Spring 本质上是一个大容器(Map) :
text
Map<String, Object> springContainer = new HashMap<>();
- Key:Bean 的名称(默认是类名首字母小写,如 "userService")
- Value:Bean 的实例对象(单例模式,默认只有一个实例)
工作流程:
- Spring 启动时扫描指定包下的所有类
- 识别带有注解的类:
@Component、@Service、@Controller、@Repository、@Resource等 - 创建这些类的实例(对象),存入 Map 容器中
2. Spring MVC 分层架构(四层模型)
你总结的四层非常清晰:
| 层级 | 作用 | 类比 |
|---|---|---|
| Entity 层 | 实体类,与数据库表一一对应 | 表的映射 |
| Dao 层 | 数据访问层,操作数据库(SQL) | 数据库管家 |
| Service 层 | 业务逻辑层,核心业务处理 | 业务主管 |
| Controller 层 | 控制层,接收前端请求,返回响应 | 前台接待 |
调用链:
text
前端 → Controller(调用)→ Service(调用)→ Dao → 操作 Entity → 数据库
3. 依赖注入(DI)的过程
你问的关键问题:Controller 怎么知道 Service 在哪里?
这正是 依赖注入(Dependency Injection, DI) 的魔力:
- 扫描注册:Spring 启动时,
@Service标注的 UserService 类被实例化,存入 Spring 容器(Map)中 - 寻找依赖:当创建 UserController 时,发现它需要 UserService
- 注入依赖:通过
@Autowired或@Resource注解,Spring 自动从 Map 中取出 UserService 对象,注入到 UserController 中 - 使用:UserController 就可以直接调用 UserService 的方法了
4. AOP(面向切面编程)
你提到 AOP(面试重点),简单来说:
AOP 允许你在不修改源代码的情况下,给方法增加额外功能,比如:
- 日志记录
- 权限检查
- 事务管理
实现原理:Spring 在运行时动态创建代理对象,在调用目标方法前后插入增强代码。
流程图
一句话总结
Spring Boot 是一个基于 Spring 的快速开发框架,它通过 IoC 容器(Map结构)管理对象,利用 DI(依赖注入)实现分层解耦,结合 Spring MVC 的四层架构(Entity/Dao/Service/Controller),让开发者能高效构建企业级应用。