zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Spring(三):IoC的本质

2023-03-31 10:46:31 时间

一、图例

 

 对照上面的图,我们回想上一篇中几个代码的实现,在没有set注入之前,代码运行完全由Service层控制,用户没有选择权,选择权在程序员手中;但是使用set注入之后,用户可以主动控制service层要执行带代码,具体执行由用户自己选择。

二、本质

控制反转(IoC)是一种设计思想,DI(Dependency Injection依赖注入)是实现IoC的一种方法。在没有IoC的程序中,对象的创建以及对象之间的依赖完全在硬编码在程序中,对象的创建是由程序自己控制,是一成不变的(是指在不修改代码的前提下无法改变);但在有IoC的程序中,对象的的创建由第三方控制,我们无需对代码做出更改即可使程序的执行发生变化。

IoC是Spring框架的核心内容,他有多种方式实现,可以通过XML文件配置、可以使用注解,在新版本Spring中甚至不需要配置也可以实现IoC。

Spring容器在初始化时先读取配置文件,根据配置文件创建对象并存入IoC容器中,使用时再从IoC中获取对象。下图是官方的一个图,就是具体的一个过程:

下图显示了 Spring 工作原理的高级视图。应用程序类与配置元数据相结合,以便在创建和初始化 后,您就拥有一个完全配置且可执行的系统或应用程序。ApplicationContext

 

 

 

 采用XML方式配置Bean的时候,Bean的定义信息和实现是分离的;而采用注解二者是结合在一起的,Bean通过注解将定义信息定义在实现类中,可以达到零配置的目的。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中,实现控制反转的是IoC容器,实现方法是依赖注入(DI)。

 

(本文仅作个人学习记录用,如有纰漏敬请指正)