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()这里。


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

B+树索引-【高扇出性】

B+树索引在DB中有一个特点就是【高扇出性】【是什么意思?】,一般在DB中B+树的高度在2-3层左右。 也就意味着只需要2-3次的IO操作即可。而现在的磁盘每秒差不多在100次IO左右,2-3次意味...
  • imzoer
  • imzoer
  • 2013年01月22日 11:04
  • 4168

Spring IOC(整体流程)

IOC容器基本分成BeanFactory和ApplicationContext两类 BeanFactory是基本,ApplicationContext多用在框架 继承结构如图: BeanFact...

Spring IOC/BeanFactory/ApplicationContext的工作流程/实现原理/初始化/依赖注入源码详解

Spring IOC/BeanFactory/ApplicationContext的工作流程/实现原理/初始化/依赖注入源码详解  一、什么是IOC容器?  IOC(Inversion of Cont...
  • hotpots
  • hotpots
  • 2017年09月20日 23:43
  • 1905

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

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

Spring的IOC原理

  • 2016年03月21日 09:38
  • 249KB
  • 下载

Spring IOC实现原理demo

  • 2015年03月10日 13:30
  • 351KB
  • 下载

Spring ioc容器启动流程

从AbstractApplicationContext的refresh()方法谈起 启动流程概览

Spring实践(一)IOC的原理和实现机制

Spring是java中非常优秀的框架,最近准备将Spring重新学习和梳理一遍。 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnso...
  • csolo
  • csolo
  • 2017年02月08日 17:25
  • 601

spring四种依赖注入方式 ( 依赖注入DI+ 控制反转IOC的原理)

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程...

Spring应用、原理以及粗读源码系列(一)--框架总述、以Bean为核心的机制(IoC容器初始化以及依赖注入)

总述:spring框架是如今J2EE开发最重要框架之一,为企业级应用提供一系列轻量级解决方案,比如:基于依赖注入的核心机制、基于AOP的声明式事务管理、与多种持久层技术整合、整合后端各种组件等等。贯穿...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring IOC原理和流程
举报原因:
原因补充:

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