什么是IOC

博客介绍了IOC(控制反转)和DI(依赖注入)的概念。IOC是控制权转移,由外部容器负责依赖对象的创建和维护;DI是IOC的实现方式,目的是创建对象并组装关系。控制反转的是获得依赖对象的过程,其好处是无需手动new对象,也不必关心创建时机。

IOC:控制反转, 控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。

DI:(依赖注入), 是ioc的一种实现方式。

目的: 创建对象并且组装对象之间的关系。

是什么控制反转了

是获得依赖对象的过程被反转了

好处

不用一个个去new对象。
不用关心什么时候创建。

### IoC (Inversion of Control) 概念及原理 IoC(Inversion of Control,控制反转)是一种设计思想,其核心在于将原本由程序代码直接管理的对象创建和依赖关系控制权,交由外部容器来管理[^1]。这意味着开发者不再需要手动通过 `new` 关键字创建对象实例或管理对象之间的依赖关系,而是由框架(如 Spring)负责这些任务。 #### 1. **IoC概念** IoC 是一种软件设计模式,强调的是控制权的转移。在传统的程序开发中,对象的创建和依赖关系通常由程序员通过代码实现,例如使用 `new` 创建对象实例。而在 IoC 的思想下,这种控制权被转移到了框架或容器中,由框架负责对象的实例化、装配和生命周期管理[^2]。 #### 2. **IoC 的原理** IoC 的实现依赖于依赖注入(Dependency Injection, DI)。DI 是 IoC 的具体实现方式之一,通过 DI,框架会自动将所需的依赖对象注入到目标对象中[^4]。以下是 IoC 原理的关键点: - **容器的作用**:IoC 容器是实现 IoC 的核心组件,它负责管理对象的生命周期、配置和依赖关系。Spring 框架中的 IoC 容器可以基于 XML 配置文件、注解或 Java 配置类进行对象的管理和依赖注入。 - **依赖注入的方式**: - **构造方法注入**:通过构造函数将依赖对象传递给目标对象。 - **Setter 方法注入**:通过目标对象的 Setter 方法将依赖对象注入。 - **接口注入**:通过定义特定接口实现依赖注入,这种方式较少使用。 #### 3. **IoC 的实现方式** 根据引用内容,IoC 在 Spring 框架中有以下三种主要实现方式[^3]: - **纯配置文件配置**:所有的 Bean 和依赖关系都通过 XML 配置文件定义,这种方式易于理解和维护。 - **配置文件+注解两掺**:结合 XML 配置文件和注解(如 `@Autowired`、`@Component` 等),这种方式在实际项目中较为常用。 - **纯注解**:完全依赖注解(如 `@Controller`、`@Service`、`@Repository` 等)来定义 Bean 和管理依赖关系,这种方式提高了开发效率。 #### 4. **IoC 的优势** - **降低耦合度**:通过将对象的创建和依赖关系交给容器管理,减少了类之间的直接依赖。 - **提高可测试性**:对象的依赖可以通过注入的方式灵活替换,便于单元测试。 - **增强灵活性**:可以在不修改代码的情况下,通过配置文件或注解调整依赖关系。 ```java // 示例代码:使用注解实现 IoC @Repository public class UserDaoImpl implements UserDao { public void save() { System.out.println("User saved!"); } } @Service public class UserService { @Autowired private UserDao userDao; public void addUser() { userDao.save(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值