1、BeanDefinition在IOC的注册

当BeanDefinition完成载入和解析之后,用户定义的BeanDefinition在IOC容器中已经建立自己的数据结构和数据表示,但是无法使用,需要进行注册,注册就是把解析得到的BeanDefinition放置到HashMap中。

通过在BeanLisabletDefinition中实现BeanDefinitionRegisitry接口,来完成注册。

注册调用过程:

2、IOC容器的依赖注入

依赖注入是用户第一次在IOC容器中查找Bean时发生的,通过BeanFactory接口的getBean()方法触发依赖注入。

依赖注入的过程:getBean()->creatBean()->instantiate()

生成Bean对象:(1)通过BeanUtils,JVN反射

       (2)通过CGLIB,SimpleInstantatiationStrategy()方法

依赖注入是发生在BeanWrapper的setProperty Values中实现的,具体的完成在BeanWrapper子类BeanWrapperImpl中。

在Bean的创建和对象依赖注入的过程中,需要依据BeaDefinition中的信息来递归的完成依赖注入。这些地柜都是以getBean()为入口的,一个递归是在上下文体系中查找需要的Bean和创建Bean的递归调用,另一个递归是在依赖注入时,通过递归调用GetBean()方法,得到当前Bean所依赖的Bean,同时触发对依赖Bean的创建和注入。

3、ApplicationContext和Bean的初始化和销毁

ApplicationContext启动是在AbstractApplicationContext中实现的。

使用上下文需要做一些准备工作,这些准备工作是在prepareBeanFactory()中实现的,这些方法中为容器配置了ClassLoader、PropteryEditor、BeanPostProcessor等。

容器的初始化和关闭过程:

容器关闭是在doClose()方法中完成的。

先发出容器关闭信号,再逐条关闭Bean,最后关闭容器。

Bean在IOC中的生命周期:

(1)Bean实例的创建。

(2)为Bean实例设置属性。

(3)调用Bean的初始化方法。

在initializeBean()方法中实现,调用初始化方法之前会调用一系列aware接口,把相关的的BeanClassLoader、BeanName、BeanFactory注入到Bean中去。

(4)应用通过IOC容器使用Bean。

(5)容器关闭时,销毁Bean。

3、lazy-init属性和预实例化

在finishBeanFeactoryInitialization的方法中封装了对lazy-init属性操作的方法,实际的处理是在DefultListableBeanFactory这个基本容器的preInstantiateSingletons方法中完成的。

4、BeanPostProcessor

BeanPostProcessor是Bean的后置处理器,是一个监听器,它可以监听容器触发的事件,实现BeanPostProcessor接口,然后设置到XML的Bean配置文件中。

Spring学习(五)--Spring的IOC的更多相关文章

  1. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  2. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  3. Spring学习(一):理解IoC容器

    序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...

  4. Spring学习(一)IOC

     Spring是一站式框架: (1)Spring在javaee三层结构中,每一层都提供不同的解决技术. web层:SpringMVC service层:Spring的Ioc dao层:Spring的J ...

  5. Spring学习五----------Bean的配置之Bean的生命周期

    © 版权声明:本文为博主原创文章,转载请注明出处 Bean的生命周期 1.定义 2.初始化 3.使用 4.销毁 初始化和销毁的三种方式 1.实现org.springframework.beans.fa ...

  6. spring学习(三) ———— spring事务操作

    前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...

  7. Spring学习笔记--Spring配置文件和依赖注入

    Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...

  8. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...

  9. Spring学习【Spring概述】

    从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...

  10. Spring学习2—Spring容器

    一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的 ...

随机推荐

  1. 在使用postman中操作api接口测试403解决方法

    在向Jenkins发送请求时收到了这样的403错误信息: No valid crumb was included in the request 后来通过google找到了解决方案. http://st ...

  2. Helix QAC/QAC++—代码静态测试工具介绍—符合功能安全标准MISRA ISO26262

    Helix QAC是静态代码分析工具,依据C和C++编码规则自动扫描代码对规则的违背.开发团队在开发过程的早期就可以用它来检测缺陷,因为此时修改代码是最方便也最经济的.Helix QAC因此自动化强制 ...

  3. IntelliJ IDEA下git版本回退,版本还原

    原文链接:https://blog.csdn.net/hehyyoulan/article/details/80005272

  4. 单元测试利器Mockito框架

    什么是Mock Mock 的中文译为仿制的,模拟的,虚假的.对于测试框架来说,即构造出一个模拟/虚假的对象,使我们的测试能顺利进行下去. Mock 测试就是在测试过程中,对于某些 不容易构造(如 Ht ...

  5. 前端模块化IIFE,commonjs,AMD,UMD,ES6 Module规范超详细讲解

    目录 为什么前端需要模块化 什么是模块 是什么IIFE 举个栗子 模块化标准 Commonjs 特征 IIFE中的例子用commonjs实现 AMD和RequireJS 如何定义一个模块 如何在入口文 ...

  6. Mysql宽字节注入 ---学习笔记

    转自:https://blog.csdn.net/niexinming/article/details/49109683 先补充一点背景:大 家都知道PHP在开启magic_quotes_gpc或者使 ...

  7. Mac 安装多个版本jdk

    JDK默认安装路径为/Library/Java/JavaVirtualMachines 多版本安装后效果为: 设置 1.执行以下命令 cd ~ open -e .bash_profile #打开.ba ...

  8. 基于模板特化的Lua自动绑定系统

    LuaBind http://www.rasterbar.com/products/luabind.html http://blog.sina.com.cn/s/blog_646817c00100gk ...

  9. 解放生产力:Spring Boot的注解校验

    关于对象入参的校验,我们可能第一个想到的就是在Controller层或者Service层增加很多if else的判断,如: if (user.getPassword() == "" ...

  10. OneDrive 折腾记

    起因 百度云的一系列劝退操作 OneDrive 5T 有点香 OneDrive 介绍 OneDrive有两种, 个人版 OneDrive 和 教育企业版 OneDrive for Business 个 ...