前言 大家好,我是老王,今天继续和大家分享反射技术。 上次我们使用反射封装了对数据库的查询,现在我们继续研究反射的用途——探究Spring的IoC容器。 首先,我们得了解什么是IoC? 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计 ...
分类:
其他好文 时间:
2019-05-09 21:49:21
阅读次数:
162
前言:在前几篇查漏补缺中,其实我们已经涉及到bean生命周期了,本篇内容进行详细分析。 首先看bean实例化过程: 分析: bean实例化开始后 注入对象属性后(前面IOC初始化十几篇文章)。 检查激活Aware接口。 执行BeanPostProcessor前置处理 实例化bean,这里会检查Ini ...
分类:
编程语言 时间:
2019-05-05 17:19:24
阅读次数:
148
前言:本文分析InitializingBean和init-method方法,其实该知识点在AbstractAutowireCapableBeanFactory#initializeBean方法中有所提及,这里对其进行详细分析。 InitializingBean InitializingBean是一个 ...
分类:
编程语言 时间:
2019-05-05 14:46:16
阅读次数:
189
话说这天,Spring派人去外部世界(内存外)寻找羊群(定位资源文件),在找来羊群之后,先是对羊群进行了一番检查和清洗,然后挂上了Spring自己的牌子,可以说是改头换面,脱胎换骨,由新羊变成了旧羊(相当于将Bean封装成BeanDefinition)。而后就送入了羊圈(伪IOC进行饲养)。 ...
分类:
其他好文 时间:
2019-05-04 13:28:07
阅读次数:
153
前言:在经过前面十二篇文章的分析,对bean的加载流程大致梳理清楚了。因为内容过多,因此需要进行一个小总结。 经过前面十二篇文章的漫长分析,终于将xml配置文件中的bean,转换成我们实际所需要的真正的bean对象。 总结 【spring源码分析】IOC容器初始化(一):主要分析了Spring是如何 ...
分类:
编程语言 时间:
2019-04-29 18:59:53
阅读次数:
169
前言:在doCreateBean方法中还遗留一个问题没有分析:循环依赖。循环依赖在Spring中是非常重要的一个知识点,因此单独进行分析。 什么是循环依赖 循环依赖就是循环引用,两个或两个以上的bean互相引用对方,最终形成一个闭环。如A依赖B,B依赖C,C依赖A。如下图所示: 循环依赖其实就是一个 ...
分类:
编程语言 时间:
2019-04-29 15:58:17
阅读次数:
151
前言:在上文bean加载过程中还要一个非常重要的方法没有分析createBean,该方法非常重要,因此特意提出来单独分析。 createBean方法定义在AbstractBeanFactory中: 该方法根据给定的beanName、BeanDefinition和args实例化一个bean对象。所有b ...
分类:
编程语言 时间:
2019-04-23 20:59:21
阅读次数:
174
前言:经过前几篇文章的讲解,我们已经得到了BeanDefinition,接下来将分析Bean的加载。 获取Bean的入口:AbstractApplicationContext#getBean 分析:首先检查BeanFactory是否存活,还记得之前分析过的prepareRefresh()方法吗?如果 ...
分类:
编程语言 时间:
2019-04-22 16:40:57
阅读次数:
126
@Import注解的作用和在使用spring的xml配置时用到的<import/>类似。但应注意是@Import在使用时必须要保证能被IOC容器扫描到,所以通常它会和@Configuration或者@ComponentScan配套使用。 @Import可以用来如下四种方式的导入: @Import在使 ...
分类:
编程语言 时间:
2019-04-20 21:22:08
阅读次数:
522
sping+springmvc的框架中,IOC容器的加载过程 http://my.oschina.net/xianggao/blog/596476 基本上是先加载ContextLoaderListener,然后生成一个ioc容器。 然后再实例化DispatchServlet时候在加载对应的配置文件, ...
分类:
编程语言 时间:
2019-04-19 11:44:09
阅读次数:
183