栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

什么是 IoC 容器?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是 IoC 容器?

什么是 IoC 容器?

这个问题我觉得可以拆分为 3 小问:

  1. IoC 是什么意思?
  2. 容器 指什么?
  3. IoC 容器是什么?

首先对于 IoC Inversion Of Control 翻译过来即 控制反转。理解 ”控制反转“ ,我觉得首先是要明白,控制了什么?而后反转给了谁?这两点弄清楚这个概念其实就很明了了。

首先控制是指控制 bean 的创建,及其内部的依赖,例如常用的 @Autoware 和 @Resource,当然这里的 bean 指的就是实体类。通常来说我们在使用 bean 的时候都会自己手动 new 一个,而这里指的反转就是将这个动作交给 容器 去做了。所以得到的结果就是,我们并不关心我们要使用的 bean 何时创建,我们只需要声明并使用就可以了。其中的依赖由容器来帮助我们自动注入,所以也经常说依赖注入。

其次是 容器 “容器” 这个词听起来很高大上,但它并不接地气,我们很难在这种抽象的概念中去理解它。其实具体到 Spring ,容器在实现上必然需要一个实际的载体,这个载体也逃不出 Java 的基础数据结构,Spring 在实现它的时候本质上就是 ConcurrentHashMap ,对应的 key 是 bean 的 beanName ,value 是实例化好的 bean。

这里我们看一眼传说中的 ”单例缓存池“

// DefaultSingletonBeanRegistry.class

private final Map singletonObjects = new ConcurrentHashMap<>(256);

所以 IoC 容器 其实就是一个为我们生产管理 bean 的容器。

如常见的 ClassPathXmlApplicationContext AnnotationConfigApplicationContext 该容器帮助我们统一管理 bean 的创建过程,注入管理相关依赖。其中也为我们提供的大量的拓展点来定制 bean 的创建。

IoC 帮助我们做到了 bean 的统一管理,以及程序解耦,使得我们编写的程序更加灵活。如依赖接口,轻松更改实现、统一的 Aop 切面处理等。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号