spring ioc容器是什么?有什么作用?

TheDisguiser 2020-05-20 17:34:57 java常见问答 8900

Spring有着IOC容器这一核心概念,你知道它是什么吗?它有什么作用呢?跟小编一起来了解了解吧。

一、什么是IOC?

IOC是一种设计原则,它被用来降低代码之间的耦合性。其中最常见的方式叫做依赖注入(DI)通过控制反转,对象在被创建的时候,系统内所有对象将通过配置文件配置的依赖把对象的引用传递给它。简单的说,就是依赖被注入到对象中。

容器(Container)容器的作用就是生成(生命周期开始时)、存放bean的实例并控制每个bean实例的生命周期 ,在适当的时候销毁bean实例(生命周期结束时)。

Spring工作流程中,所有类都会在spring容器中登记,告诉spring这是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

二、IOC有什么用?

1.能够在系统运行中,动态的向某个对象提供它所需要的其他对象。

2.由于依赖注入思想是通过反射机制实现的,在实例化一个类时,它会通过反射来调用类的set方法将事先保存在HashMap中的类属性注入到类里。 意思就是 ,在传统对象创建方式中,是由调用者来创建被调用者的实例,而在Spring中,它创建被调用者的工作是由Spring来完成,然后注入调用者的,即所谓的依赖注入or控制反转。 注入方式有两种:依赖注入和设置注入; IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。

3.IOC容器会以某种方式加载Configuration Metadata, 然后根据这些信息绑定整个系统的对象, 最终组装成一个可用的基于轻量级容器的应用系统,具体提供功能如图:

spring ioc容器

4. IOC容器实现以上功能的过程,  实际上可以按照类似的流程划为两个阶段:

1.容器启动阶段

2.Bean实例化阶段

SpringIOC容器在实现时,充分运用了这两个实现阶段的不同特点,在每个阶段中都加入了相应的容器扩展点,方便我们根据具体场景具体需要加入自定义扩展逻辑。

spring ioc容器

以上就是今天关于IOC容器的全部内容了,你了解了吗?更多相关java常见问答知识,请关注我们的网站来详细了解吧。

推荐阅读:

spring的ioc和aop的原理是什么?它们有什么优势吗?

spring依赖注入是什么意思?一般用在什么地方?

Spring特点是什么?有哪些特点?