Ioc和DI

IoC
IoC 是一种设计原则,用于减少代码之间的耦合。它通过将对象的创建和管理交给外部容器(如 Spring 容器)来实现,而不是由对象自己创建或管理它们所依赖的对象。

核心思想
控制反转:应用程序不再负责对象的创建和管理,而是将这些工作交给外部容器。
依赖管理:容器负责管理对象的生命周期以及它们之间的依赖关系。

BeanFactory:Spring 容器的基础接口,负责管理 Bean 的生命周期。
ApplicationContext:BeanFactory 的扩展,提供了更多的功能,如 AOP、事件处理等。
优点
解耦:减少代码之间的直接依赖,提高代码的可维护性和可测试性。
灵活性:可以方便地替换或修改依赖的实现。

DI
DI 是实现 IoC 的一种具体方式,通过外部容器将对象的依赖关系注入到对象中,而不是由对象自己创建或查找这些依赖。

注入方式
构造函数注入(Constructor Injection)

通过构造函数传递依赖。
适用于必须的依赖,保证对象在被创建时就已经具备了必要的依赖。
示例:
public class MyService {
private final MyRepository repository;

public MyService(MyRepository repository) {
    this.repository = repository;
}

}
Setter 方法注入(Setter Injection)

通过 setter 方法传递依赖。
适用于可选的依赖,允许在对象创建后动态修改依赖。
示例:
public class MyService {
private MyRepository repository;

public void setRepository(MyRepository repository) {
    this.repository = repository;
}

}

IoC 和 DI 的关系
IoC 是一个原则,指的是将控制权交给外部容器。
DI 是一种实现方式,通过注入依赖来实现 IoC。

posted @ 2025-01-16 19:13  Look_Back  阅读(10)  评论(0)    收藏  举报