一步一步探究Spring源码之IOC(一)

1、概述

    IOC--Inversion Of Control,即控制反转,是一种设计思想。该思想主要包含两个方面,由顶层控制类统一管理对象的生命周期和对象与对象之间的依赖,降低了耦合度,并让用户无需花费精力去管理对象。控制:控制对象的产生及依赖的入口,反转:对象的产生由开发者产生变为顶层产生,由主动变为了被动。IOC引申出两个概念:容器、依赖注入。

    容器:存放东西的器皿,把东西全部放到这个器皿里面,当需要使用的时候就去器皿里面拿出来,用完之后再还回到器皿里。像大家比较熟悉的数据库的连接池也可以看作是一个容器,所有数据库连接都会放到一个池子里面,当需要用到连接时就去池子里面拿一个,不用了再还回去,使用者不需要关注连接的管理,只需要拿和还两个动作。而在IOC容器也可类比连接池,容器负责对象的实例化、初始化等,它管理整个对象的生命周期,所有对象都存放在容器当中,如果需要使用对象则从容器中拿,使用者无需关注对象生命周期的管理。

    DI:Dependency Injection 依赖注入,对象之间的依赖关系由容器运行时决定,应用程序的运行依赖于IOC容器,其运行时依赖的对象也是通过IOC容器动态的注入。比如对象A需要操作数据库,传统方式需要在A中自己编写代码来获得一个Connection对象,有了IOC容器之后,只需要告诉IOC容器A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,IOC容器会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由IOC容器注入到A中的。

在研究IOC源码之前需要去了解java的反射机制,IOC底层是通过反射实现的

2、架构

2.1、核心内作用说明

2.2、主要流程图


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容