java程序设计开发,设计思想Spring开源框架-IOC与AOP-IOC学习笔记,解耦组件,使组件间依赖关系由容器动态管理,而非硬编码。
Java 程序设计开发:Spring 框架 - IOC(控制反转)学习笔记
一、IOC 核心思想与本质
定义:
- 控制反转(Inversion of Control):将对象的创建、依赖关系的管理从程序代码中转移到外部容器(如 Spring 容器),由容器负责对象的生命周期和依赖注入。
- 核心目标:解耦组件,使组件间依赖关系由容器动态管理,而非硬编码。
本质:
- 依赖注入(DI, Dependency Injection):IOC 的具体实现方式,通过构造器、Setter 方法或字段注入依赖对象,而非组件自己创建依赖。
二、IOC 容器的作用
-
对象创建:通过配置(XML / 注解)创建 Bean 实例。
-
依赖管理:自动注入 Bean 所需的依赖对象。
-
生命周期管理:控制 Bean 的初始化、销毁(如调用
init()
/destroy()
方法)。 -
作用域管理:支持单例(
singleton
)、原型(prototype
)、请求 / 会话作用域(Web 环境)等。
三、IOC 实现方式:依赖注入(DI)
1. 构造器注入
场景:依赖关系在对象创建时即确定,注入后不可变。
案例代码:
// 依赖接口
public interface UserDao {
void save();
}
// 实现类
public class UserDaoImpl implements UserDao {
@Override public void save() { System.out.println("保存用户"); }
}
// 目标类(通过构造器注入UserDao)
public class UserService {
private final UserDao userDao;
// 构造器注入(必需依赖)
public UserService(UserDao userDao) {
this.userDao = userDao;
}
publi