注:本文大多数内容都是摘自《Spring技术内幕》这本书

简单来说,Ioc容器的初始化过程是在refresh()方法中启动的,包括BeanDefinition的Resource定位,载入和注册三个过程。

第一:Resource的定位

这个Resource指的是BeanDefinition的资源定位,由ResourceLoader通过统一的Resource接口来完成。文件系统中的Bean定义信息可以使用FileSystemResource来进行抽象,类路径中的Bean定义信息可以使用ClassPathResource来抽象。

第二: BeanDefinition的载入

上面已经定位了资源Resource的位置,接下来就是将Bean定义表示成Ioc容器内部的结果,即读取进来封装成BeanDefinition。

第三:向IOc容器注册这些BeanDefinition

实际上就是将BeanDefinition注册到Hashmap中去,IOC就是通过这个HashMap来持有这些BeanDefinition数据的

但是请注意,上面三个过程不包含Bean依赖注入的过程,依赖注入一般发生在应用第一次通过getBean向容器索取Bean的时候,但是有一个例外是,可以设置Bean的lazyinit属性,那么这个Bean的依赖注入就再IOC容器初始化时就预先完成了

Spring IOC学习心得之IOC容器的初始化过程相关推荐

  1. [Spring 深度解析]第7章 IoC容器的初始化过程

    7. IoC容器的初始化过程 ​ 简单来说,IoC容器的初始化是由前面介绍的refresh()方法来启动的,这个方法标志着IoC容器的正式启动.具体来说,这个启动包括BeanDefinition的Re ...

  2. Spring IoC(二)IoC容器的初始化过程

    (一)IoC 容器初始化过程概述 1.1简要概述初始化过程 IoC 容器的初始化过程是通过refresh() 方法来启动的,这个方法标识着IoC 容器正式启动.具体来说,这个启动过程包括:BeanDe ...

  3. 《Spring技术内幕》——2.3节IoC容器的初始化过程

    2.3 IoC容器的初始化过程 简单来说,IoC容器的初始化是由前面介绍的refresh()方法来启动的,这个方法标志着IoC容器的正式启动.具体来说,这个启动包括BeanDefinition的Res ...

  4. SpringBoot启动流程分析(四):IoC容器的初始化过程

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  5. IOC原理之IoC容器的初始化过程

    IoC容器的初始化过程包括Resource定位.BeanDefinition的载入以及向IoC容器注册这些BeanDefinition三个阶段. IoC容器的初始化过程概要 IoC容器的初始化包括三个 ...

  6. Spring容器的初始化过程

    1.Spring 容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依 ...

  7. Spring IOC学习心得之源码级分析ContextLoaderListener的作用(IOC容器初始化入口)

    ContextLoaderListener类是负责初始化IOC容器,即在我们的web项目中,这里就是IOC容器初始化的入口,由这个类启动IOC容器的初始化. 它配置在web.xml中,比如如下配置: ...

  8. Spring IOC学习心得之BeanPostProcessor,BeanNameAware,BeanClassLoaderAware,BeanFactoryAware接口是如何起作用的

    1. 首先说下BeanPostProcessor接口中的两个方法,如下: package org.springframework.beans.factory.config;import org.spr ...

  9. Spring IoC容器的初始化过程

    转载自:http://blog.csdn.net/u010723709/article/details/47046211 原题是:2 IOC容器初始化过程 作者:@小小旭GISer ========= ...

最新文章

  1. JDBC Driver常用连接方法列表
  2. 小程序商城选什么服务器,小程序商城到底用来干什么?
  3. 采购申请不固定供应商怎么破?
  4. Git分支创建、合并、上传等命令
  5. linux c程序加args,C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用
  6. C#.NET 通用权限管理系统中的数据集权限设置实现参考界面(商业化成熟权限管理系统,提供全部源码)...
  7. ORA-30377 MV_CAPABILITIES_TABLE not found
  8. html 字体思源_CSS font-family 各字体一览表
  9. build lavas 失败_Lavas 命令介绍 - Lavas 教程
  10. RAID磁盘阵列相关技术详解
  11. java 实心圆,如何用css3实现实心圆
  12. 【HTML】HTML网页设计----植物网站设计
  13. PDF文件怎么合并?分享一个简单的方法
  14. Python 如何 ping
  15. 万兆局域网方案_家庭万兆方案性价比之选,10G网速不是梦!
  16. uniapp页面导出pdf
  17. undefined、null与NaN的区别
  18. sfc /scannow命令如何能用虚拟光驱完成修复?
  19. WordPress网站程序如何搭建教程详细流程步骤
  20. oracle consistent gets,Oracle数据库consistent gets使用的特例

热门文章

  1. (第一组_GNS3)基于上下文的访问控制
  2. win10 + python3.6.1 + tensorflow1.10 + cuda9.0 + cudnn7.2
  3. COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛
  4. 手把手教会你模拟退火算法
  5. oc_转_类的数组的实现和操作
  6. 利用NTFS流文件隐藏
  7. oralce中的dual详解
  8. OAuth 1.0a 的 C# 代码实现
  9. 如何使用txt文件实现JMeter参数化
  10. 03-15 截图、日志与录屏