Spring学习(五)--Spring的IOC
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的更多相关文章
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- Spring学习(一):理解IoC容器
序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...
- Spring学习(一)IOC
Spring是一站式框架: (1)Spring在javaee三层结构中,每一层都提供不同的解决技术. web层:SpringMVC service层:Spring的Ioc dao层:Spring的J ...
- Spring学习五----------Bean的配置之Bean的生命周期
© 版权声明:本文为博主原创文章,转载请注明出处 Bean的生命周期 1.定义 2.初始化 3.使用 4.销毁 初始化和销毁的三种方式 1.实现org.springframework.beans.fa ...
- spring学习(三) ———— spring事务操作
前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...
- Spring学习笔记--Spring配置文件和依赖注入
Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...
- Spring学习【Spring概述】
从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...
- Spring学习2—Spring容器
一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的 ...
随机推荐
- CSS 选择器及优先级
CSS 选择器及优先级 1.根据权值计算 div .class1 #people的权值等于1+10+100=111 .class2 li #age的权值等于10+1+100=111 2.权值相同,那么 ...
- 卡方检验(Chi_square_test): 原理及python实现
概述 What for?主要用在某个变量(或特征)值是不是和应变量有显著关系,换种说法就是看某个变量是否独立 \(X^2=\sum{\frac{(observed-expected)^2}{expec ...
- 揭秘|一探腾讯基于Kubeflow建立的多租户训练平台背后的技术架构
腾讯业务及组织架构现状 先简单和大家介绍一下腾讯内部的业务及相关组织架构的现状,有助于帮助大家理解为什么我们会基于后面的架构来设计整套方案. 下图的应用大多数人经常会用到,比如微信.腾讯视频.游戏等等 ...
- 基于Rust-vmm实现Kubernetes运行时
随着容器及K8s的广泛使用,越来越多的容器安全与隔离问题被暴露出来,如:容器逃逸.水平攻击.DDos攻击等严重威胁了办公和生产环境的安全与稳定,影响了业务的正常运行.安全容器技术孕育而生,产生了kat ...
- Java/后端学习路线
点赞再看,养成习惯,微信搜一搜[三太子敖丙]关注这个喜欢写情怀的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系 ...
- php验证当前是设备是电脑端还是手机端
<?php // 验证设备为PC还是WAP $agent = $_SERVER['HTTP_USER_AGENT']; if(strpos($agent,"comFront" ...
- facebookPixel代码安装详解
最近接到一个需求,优化独立站的facebookPixel代码,完成后对这个项目进行复盘.首先要介绍facebookPixel的理论知识. Facebook像素是一段JavaScript代码,其中加载了 ...
- 英文ubuntu中的乱码,输入法问题 、mint字体发虚
英文ubuntu文本文件默认编码是utf-8,windows下是gbk,所以产生乱码问题. 1.前言 运行命令查看系统编码 $locale 结果如下: LANG=en_US.UTF-8 LANGUAG ...
- iOS 报错: linker command failed with exit code 1 (use -v to see invocation) 原因
在iOS开发中,很多人会遇到这样的报错 linker command failed with exit code 1 (use -v to see invocation) 可能的原因如下: 1.引用出 ...
- Roads in the North (树的直径)
Building and maintaining roads among communities in the far North is an expensive business. With thi ...