Spring:源码解读(提纲)

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】
免费领取10G资料包与项目实战视频资料

一、 什么是Ioc/DI?

二、 Spring IOC体系结构

(1) BeanFactory

(2) BeanDefinition

三、 IoC容器的初始化

1、 XmlBeanFactory(屌丝IOC)的整个流程

2、 FileSystemXmlApplicationContext 的IOC容器流程

1、高富帅IOC解剖

2、 设置资源加载器和资源定位

3、AbstractApplicationContext的refresh函数载入Bean定义过程:

4、AbstractApplicationContext子类的refreshBeanFactory()方法:

5、AbstractRefreshableApplicationContext子类的loadBeanDefinitions方法:

6、AbstractBeanDefinitionReader读取Bean定义资源:

7、资源加载器获取要读入的资源:

8、XmlBeanDefinitionReader加载Bean定义资源:

9、DocumentLoader将Bean定义资源转换为Document对象:

10、XmlBeanDefinitionReader解析载入的Bean定义资源文件:

11、DefaultBeanDefinitionDocumentReader对Bean定义的Document对象解析:

12、BeanDefinitionParserDelegate解析Bean定义资源文件中的元素:

13、BeanDefinitionParserDelegate解析元素:

14、解析元素的子元素:

15、解析子元素:

16、解析过后的BeanDefinition在IoC容器中的注册:

17、DefaultListableBeanFactory向IoC容器注册解析后的BeanDefinition:

总结:

四、IOC容器的依赖注入

1、依赖注入发生的时间

2、AbstractBeanFactory通过getBean向IoC容器获取被管理的Bean:

3、AbstractAutowireCapableBeanFactory创建Bean实例对象:

4、createBeanInstance方法创建Bean的java实例对象:

5、SimpleInstantiationStrategy类使用默认的无参构造方法创建Bean实例化对象:

6、populateBean方法对Bean属性的依赖注入:

7、BeanDefinitionValueResolver解析属性值:

8、BeanWrapperImpl对Bean属性的依赖注入:

五、IoC容器的高级特性

1、介绍

2、Spring IoC容器的lazy-init属性实现预实例化:

(1) .refresh()

(2).finishBeanFactoryInitialization处理预实例化Bean:

(3) .DefaultListableBeanFactory对配置lazy-init属性单态Bean的预实例化:

3、FactoryBean的实现:

(1).FactoryBean的源码如下:

(2). AbstractBeanFactory的getBean方法调用FactoryBean:

(3)、AbstractBeanFactory生产Bean实例对象:

(4).工厂Bean的实现类getObject方法创建Bean实例对象:

4.BeanPostProcessor后置处理器的实现:

(1).BeanPostProcessor的源码如下:

(2).AbstractAutowireCapableBeanFactory类对容器生成的Bean添加后置处理器:

(3).initializeBean方法为容器产生的Bean实例对象添加BeanPostProcessor后置处理器:

(4).AdvisorAdapterRegistrationManager在Bean对象初始化后注册通知适配器:

5.Spring IoC容器autowiring实现原理:

(1). AbstractAutoWireCapableBeanFactory对Bean实例进行属性依赖注入:

(2).Spring IoC容器根据Bean名称或者类型进行autowiring自动依赖注入:

(3).DefaultSingletonBeanRegistry的registerDependentBean方法对属性注入:


来源:http://ddrv.cn/a/88268

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » Spring:源码解读(提纲)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏