Spring 中的 Bean 详解
Spring 中的 Bean 详解
目录
- 一、Bean 是什么?
- 二、Bean 是怎么创建的?
- 三、Bean 在容器中的作用
- 四、Bean 生命周期(重点⭐)
- 五、Bean 的作用域(Scope)
- 六、一个实际场景帮助你理解 ⭐
- 七、一句话总结(面试用🔥)
- 八、进阶学习建议
一、Bean 是什么?
定义
Bean 是由 Spring IoC 容器实例化、管理和维护的对象。
通俗理解
你自己创建对象:
1 | UserService userService = new UserService(); |
Spring 帮你创建对象:
1 |
|
👉 这个 userService 就是一个 Bean
二、Bean 是怎么创建的?
Spring 创建 Bean 主要有三种方式:
2.1 XML 配置(早期)
1 | <bean id="userService" class="com.example.UserService"/> |
2.2 注解(最常用)
1 |
|
常见注解:
@Component@Service@Repository@Controller
👉 本质:都是注册 Bean
2.3 Java 配置类
1 |
|
三、Bean 在容器中的作用
Spring IoC 容器主要做两件事:
3.1 创建对象(IoC:控制反转)
原来:
1 | new UserService(); |
现在:
👉 由 Spring 容器统一创建
3.2 管理依赖(DI:依赖注入)
1 |
|
👉 Spring 自动注入依赖关系
四、Bean 生命周期(重点⭐)
4.1 生命周期流程
1 | 实例化 → 属性注入 → 初始化 → 使用 → 销毁 |
4.2 详细过程
4.2.1 实例化
1 | new UserService() |
4.2.2 属性注入
1 |
4.2.3 初始化
@PostConstructinit-method
4.2.4 使用
👉 被业务逻辑调用
4.2.5 销毁
@PreDestroydestroy-method
4.3 生命周期扩展点(面试高频)
- BeanPostProcessor
- Aware 接口
五、Bean 的作用域(Scope)
Spring Bean 默认是 单例模式。
| 作用域 | 说明 |
|---|---|
| singleton | 单例(默认) |
| prototype | 每次创建新对象 |
| request | 每个 HTTP 请求 |
| session | 每个会话 |
示例:
1 |
|
六、一个实际场景帮助你理解 ⭐
6.1 电商系统结构
1 | Controller → Service → DAO |
6.2 不使用 Spring
1 | UserService userService = new UserService(); |
问题:
- 手动管理依赖
- 高耦合
- 难维护
6.3 使用 Spring
1 |
|
优势:
- 自动创建对象
- 自动注入依赖
- 生命周期统一管理
七、一句话总结(面试用🔥)
Bean 是由 Spring IoC 容器管理的对象,负责对象的创建、依赖注入、初始化以及销毁。