Spring IOC原理和流程

原创 2017年01月03日 16:34:39

Spring的控制反转(IOC),简单来说,就是运用反射技术,

  1. 动态生成对象
  2. 将配置文件中的属性值注入到对象中
具体的流程为,
  1. Resource定位
  2. BeanDefinition的载入和解析
  3. BeanDefinition的注册
  4. 依赖注入
下面详细谈一下各个流程,


Resource定位

Resource资源就是xml配置文件,对xml的抽象,包含了BeanDefinition的定义信息。由于配置信息来源的多样化,所以Resource也有不同的抽象实现,

  • ClassPathResource可用来获取类路径下的资源文件。      
  • FileSystemResource可用来获取文件系统里面的资源。
  • UrlResource可用来代表URL对应的资源,它对URL做了一个简单的封装。通过给定一个URL地址,我们就能构建一个UrlResource。
  • ByteArrayResource是针对于字节数组封装的资源,它的构建需要一个字节数组。
  • ServletContextResource是针对于ServletContext封装的资源,用于访问ServletContext环境下的资源。
  • InputStreamResource是针对于输入流封装的资源,它的构建需要一个输入流。
针对以上各种Resource资源,运用ResourceLoader定位。ResourceLoader是一个接口,用于实现不同的Resource加载策略。


BeanDefinition的载入和解析

获取到Resource后,需要将Resource中对bean的定义转化为BeanDefinition。

BeanDefinition是对bean的描述,有属性值,构造参数和具体实现提供的其他信息。

过程包括,

  1. 读取配置文件
  2. 封装成BeanDefinition对象


BeanDefinition的注册

构建完数据表示后,需要对这些数据进行注册。具体是调用BeanDefinitionRegistry接口的实现类,完成向容器的注册,就是存入一个HashMap中。


依赖注入

运用反射机制,在getBean()方法调用时,生成对应的bean对象。实例化方法分为,

  1. JVM反射
  2. CGLIB
如果BeanDefinition中lazy-init设置的是true,则会在初始化过程中创建注入而不是在getBean()这里。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring IOC和Spring AOP的实现原理(源码主线流程)

写在前面       正本文参考了《spring技术内幕》和spring 4.0.5源码。本文只描述原理流程的主线部分,其他比如验证,缓存什么可以具体参考源码理解。 Spring IOC ...
  • u013430196
  • u013430196
  • 2015年09月08日 14:33
  • 2318

Spring IOC和AOP 原理彻底搞懂

本博中关于spring的文章:Spring IOC和AOP原理,Spring事务原理探究,Spring配置文件属性详解,Spring中的代理模式 Spring提供了很多轻量级...
  • qq_26562641
  • qq_26562641
  • 2017年01月09日 09:16
  • 1730

通俗的介绍Spring的IOC特性和原理

前言: 我才做项目没多久,几个项目都是用的spring框架,先开始其实并不清楚spring有什么好的特性,只知道别人那样写的,我也就依葫芦画瓢的写,后来也是想搞清楚为什么spring框架这么流行,才来...
  • qq_33142257
  • qq_33142257
  • 2016年11月11日 01:30
  • 791

关于spring,IOC和AOP的解析原理和举例

关于spring ioc  这段时间也着实好好的看了下spring的相关书籍,对其也有了大概和初步的认识和理解,虽然之前也一直听说spring是一个非常优秀的开源框架,可一直没有机会学习和使用(是...
  • paincupid
  • paincupid
  • 2015年01月26日 14:47
  • 4321

spring 中ioc和aop 的原理是什么

IOC(反转控制):对成员变量的赋值的控制权从代码中反转到配置文件中。 AOP:Aspect(切面) Oriented(面向) Programming(编程),面向切面编程。 IOC:控制反转也叫依...
  • pengzhenjie36
  • pengzhenjie36
  • 2016年09月09日 15:29
  • 995

Spring IOC(整体流程)

IOC容器基本分成BeanFactory和ApplicationContext两类 BeanFactory是基本,ApplicationContext多用在框架 继承结构如图: BeanFact...
  • zly9923218
  • zly9923218
  • 2016年05月03日 00:07
  • 1749

【Spring】Spring的IOC(控制反转)/DI(依赖注入)原理(一):用到“反射”编程

1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 ...
  • cangchen
  • cangchen
  • 2015年04月08日 22:25
  • 1866

spring ioc原理(看完后大家可以自己写一个spring) .

最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,...
  • lulongzhou_llz
  • lulongzhou_llz
  • 2015年03月18日 16:21
  • 1162

面试题spring的ioc和aop的原理

1、IoC全称Inverse of Control(反向控制戒控制反转),程序之间解耦 在类和类之间存在控制权,控制权指的是对象的创建和使用 比如有类A和类B,我们之前的做法是在A中调用B,那...
  • jaryle
  • jaryle
  • 2016年08月31日 22:27
  • 2856

[spring入门学习笔记][spring的IoC原理]

什么叫IoC控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency ...
  • zy691357966
  • zy691357966
  • 2016年04月13日 23:51
  • 2257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring IOC原理和流程
举报原因:
原因补充:

(最多只允许输入30个字)