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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!