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, 然后根据这些信息绑定整个系统的对象, 最终组装成一个可用的基于轻量级容器的应用系统,具体提供功能如图:
4. IOC容器实现以上功能的过程, 实际上可以按照类似的流程划为两个阶段:
1.容器启动阶段
2.Bean实例化阶段
SpringIOC容器在实现时,充分运用了这两个实现阶段的不同特点,在每个阶段中都加入了相应的容器扩展点,方便我们根据具体场景具体需要加入自定义扩展逻辑。
以上就是今天关于IOC容器的全部内容了,你了解了吗?更多相关java常见问答知识,请关注我们的网站来详细了解吧。
推荐阅读: