Spring IoC是spring的核心,贯穿始终。ioc是由spring来负责控制对象的生命周期和对象间的关系,降低项目的耦合度。
以下简要说明下ioc以及依赖注入流程及实现方式。
IOC(inversion of control):ioc有两种方式,DI(dependecy injection)和DL,dl( dependency lookup),
前者是当前软件实体被动接受其依赖的其他组件被ioc容器注入,后者则是当前软件实体主动去某个服务注册地查找依赖的哪些服务。
spring ioc容器的依赖注入流程:
1、收集和注册。通过xml或java代码的方式定义一些bean,通过手动组装或让容器基于某些机制自动扫描的形式,把这些bean收集到ioc容器中。通过xml方式收集并注册单一bean,形式如下:可以通过xml schema形式的配置进行批量扫描并采集和注册。
2、分析和组装: ioc容易收集并注册完bean之后,会根据它们之间的依赖关系先后组装它们。
IoC能做什么?
IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。 IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。
让我们来看下IoC容器到底是如何工作。
在此我们以xml配置方式来分析一下:
一、准备配置文件:就像前边Hello World配置文件一样,在配置文件中声明Bean定义也就是为Bean配置元数据。
二、由IoC容器进行解析元数据: IoC容器的Bean Reader读取并解析配置文件,根据定义生成BeanDefinition配置元数据对象,IoC容器根据BeanDefinition进行实例化、配置及组装Bean。
三、实例化IoC容器:由客户端实例化容器,获取需要的Bean。
以下是视频讲解(想要资源的可以私聊)
第一节(SpringIOC注解版运行效果演示)
第二节(SpringIOCXML方式注入对象原理分析)
第三节(Dom4j解析XML)
第四节(手写SpringIOCXML方式注入对象)
第五节(重构代码-手写SpringIOCXML方式注入对象)
第六节(SpringIOC使用注解注入对象原理分析)
第七节(手写SpringIOC注解注入对象基本实现01)
第八节(手写SpringIOC注解注入对象基本实现02)
第九节(手写Spring注解依赖注入原理分析)
第十节(手写Spring注解依赖注入基本实现)
第十一节(解决手写Spring注解依赖注入Bug)