Spring IoC 详解:原理、实现与实战
前言
Spring IoC(Inversion of Control,控制反转)是Spring框架的核心基础。它通过解耦对象的创建与依赖关系管理,极大提升了系统的可维护性和扩展性。本文将系统梳理Spring IoC的原理、核心概念、配置方式、源码机制、常见应用场景和最佳实践。
1. 什么是IoC?
1.1 IoC的基本概念
IoC(控制反转)是一种设计思想,将对象的创建和依赖关系的管理交给容器(如Spring),而不是在代码中手动控制。IoC的核心目标是解耦。
1.2 IoC与DI的关系
- IoC:一种思想,强调对象控制权的反转。
- DI(Dependency Injection,依赖注入):IoC的具体实现方式。
2. Spring IoC的核心概念
2.1 Bean
Bean是由Spring IoC容器管理的对象。通常是应用中的组件、服务、DAO等。
2.2 IoC容器
Spring IoC容器负责Bean的创建、装配、生命周期管理。常用容器有:
ApplicationContext
(推荐,功能更全)BeanFactory
(底层接口,延迟加载)
2.3 依赖注入方式
- 构造器注入
- Setter方法注入
- 字段注入(@Autowired)
2.4 Bean的作用域
singleton
(默认,单例)prototype
(原型,每次获取新实例)request
、session
、application
(Web环境)
2.5 Bean的生命周期
- 实例化 → 属性赋值 → 初始化(
@PostConstruct
/init-method)→ 使用 → 销毁(@PreDestroy
/destroy-method)
3. Spring IoC的配置方式
3.1 基于XML的配置
<!-- applicationContext.xml -->
<bean id="userService" class=