Laboratory Of Guiling

Boilerplate of Gui Ling

Spring源码学习(十)

Spring源码学习之今天下雨

Spring源码解析(十) 这里使用工厂方法创建bean实例 然后从bean工厂中把FactoryBean(工厂Bean)拿出来(我擦!这里有点儿绕口) 下面在工厂Bean中找出所有的构造方法,添加到候选方法中等待被调用 然后逐个调用创建Bean的实例,在实例创建完成之后要去执行applyMergedBeanDefinitionPostProcessors(mbd, be...

Spring源码学习(九)

Spring源码学习之今天下雨

Spring源码解析(九) 接着上次的说: 上次说到,当bean是单例的时候回去创建Bean进入到createBean中有了以前的经验我们可以知道,createBean这个方法应该没有真正创建Bean,进去看一下: 在这个方法里可以知道首先解析了这个Bean的定义信息这个解析的过程这里我们先略过Class<?> resolvedClass = resolveBean...

Spring源码学习(八)

Spring源码学习之真正的技术

Spring源码解析(八) ​ 上一篇说到了CreateBean创建Bean实例 ​ 由以前的经验我们可以知道这个方法里其实并没有进行实际的Bean创建,而是进行一系列的准备和验证工作 在注释中可以了解到该方法的一些作用:创建一个Bean的实例,给Bean设置属性,应用PostProcessor等。 首先从BeanDefintion中解析出Bean的Class信息,让后创...

Spring源码学习(七)

Spring源码学习之心情不太好

Spring源码解析(七) 上一篇文章说到了Bean创建过程中的**getSingleton(beanName)**方法,接着上次的说。 调用完**getSingleton(beanName)** 方法后如果放回为不空,也就是说当前Bean已经被创建过,然后会对返回的Bean进行检查。 在getObjectForBeanInstance(sharedInstance,name,b...

Spring源码学习(六)

Spring源码学习之贼啦啦滴溜

Spring源码解析(六) - 上一篇已经进行了BeanPostProcessor的注册,接下来先跳过中间几个不太重要的步骤,直接来到Bean的创建过程。 进入初始化Bean的方法中首先给BeanFactory设置了一系列的服务组件,主要的方法其实是最后一个调用 从方法名可以大致看出是预实例化单实例Bean 首先通过BeanName获取到Bean的定义信息,如果有父类,则会将...

Spring源码学习(五)

Spring源码学习之开篇一张图内容全靠编

Spring源码解析(五) ​ 在上一篇中已经完成了BeanFactoryPostProcessors的激活和执行,在本篇将会开始注册和BeanPostProcessors. ​ BeanPostProcessor是BeanFactory中的一个属性,是一个List集合,BeanPostProcessor的作用是在所有Bean调用初始化方法的前后执行一些操作。 在注册B...

Spring源码学习(四)

Spring源码学习之开篇一张图内容全靠编

Sring源码解析(四) 在上篇中已经完成了BeanFactory的准备工作,给BeanFactory添加了gezhog各种属性和上下文。 下面要开始执行BeanFactory的后置处理器了,在准备完成后Spring给我们提供了一个添加后置处理逻辑的方postProcessBeanFactory(beanFactory)这个方法是提供给子类去实现的,目的是在BeanFactory准备工作完...

Spring源码学习(三)

Spring源码学习之柳暗花明又一村

Spring源码分析(三) 准备BeanFactory 上一篇讲到对BeanFactory进行刷新有两种不同的操作,在BeanFactory刷新完成之后,就要进行BeanFactory使用前的准备了。 用prepareBeanFactory(beanFactory);方法对BeanFactory做使用前的准备,实际上就是给BeanFactory设置相应的属性,设置BeanFac...

Spring源码学习(二)

Spring源码学习之高手如云

Spring源码分析(二) 上篇中说道执行refresh()方法中的prepareRefresh();进行容器刷新前的准备工作。 首先看一下创建容器的几种方式,上篇中只说了其中的一种方式,使用注解的方式创建。除了注解方式外还有 ApplicationContext applicationContext = new AnnotationConfigApplicationConte...

Spring源码学习(一)

Spring源码学习之万事开头难

Spring源码解析一 在第一篇博文中已经给出类Spring容器创建的过程图,从这篇文章开始,将以分析源码的形式进行Spring的学习。 首先,当我需要用到一个对象的时候,我们会从Spring容器中通过BeanName的形式去获得Bean(常用方式)例如: ApplicationContext applicationContext = new AnnotationConfigApplic...