Spring5.0源码学习
主要是记录自己学习Spring5.0源码历程!
mokingone
去做你害怕的事,害怕自然就会消失。这个世界什么都有,唯独没有捷径,世界上很多酷炫的东西,底层逻辑都是靠时间堆积出来的。
展开
-
Spring5源码分析(三) IOC容器的依赖注入— 基于XML的依赖注入(三)
七、BeanDefinitionValueResolver解析属性值 当容器在对属性进行依赖注入时,如果发现属性值需要进行类型转换,如属性值是容器中另一个Bean实例对象的引用,则容器首先需要根据属性值解析出所引用的对象,然后才能将该引用对象注入到目标实例对象的属性上去,对属性进行解析的由 resolveValueIfNecessary 方法实现,其源码如下: //解析属性值,对注入类...原创 2018-06-03 22:30:09 · 532 阅读 · 0 评论 -
Spring5源码分析(三) IOC容器的依赖注入— 基于XML的依赖注入(二)
四、createBeanInstance 方法创建Bean的java 实例对象 在createBeanInstance方法中,根据指定的初始化策略,使用静态工厂、工厂方法或者容器的自动装配特性生成java实例对象,创建对象的源码如下: //创建Bean的实例对象 protected BeanWrapper createBeanInstance(String beanName, Root...原创 2018-06-01 17:10:09 · 475 阅读 · 0 评论 -
Spring5源码分析(三) IOC容器的依赖注入—基于XML的依赖注入(一)
Spring中IOC容器的依赖注入主要有两种方式,一种是基于XML的依赖注入,一种是基于Annotation的依赖注入。接下来将对这两种依赖注入的方式进行分析,依赖注入的代码也比较复杂,所以还是分成几篇进行讲解。 一、依赖注入发生的时间 当 Spring IOC容器完成了Bean定义资源的定位、载入和解析注册以后,IOC 容器中已经管理类Bean定义的相关数据,但是此时IOC容...原创 2018-05-30 23:39:42 · 609 阅读 · 1 评论 -
Spring5源码分析(二) IOC 容器的初始化(五)
此篇文章为Spring5源码分析——IOC容器的初始化的最后一篇,这一篇主要是对IOC容器的初始化进行总结。 一,IOC 容器的初始化总结 通过上面的几篇文章我们完成了对FileSystemXmlApplicationContext IOC容器创建的分析,接下来总结一下IOC容器初始化的基本步骤。 1. 初始化的入口在容器实现中的 refresh()调用来完成。 2. 对 bea...原创 2018-05-29 19:49:04 · 782 阅读 · 0 评论 -
Spring5源码分析(二) IOC 容器的初始化(四)
承接上一篇文章继续分析FileSystemXmlApplicationContext IOC容器创建的流程。 2.12 BeanDefinitionParserDelegate 解析元素 BeanDefinitionParserDelegate 在解析调用 parsePropertyElements 方法解析元素中的属性子元素,解析源码如下: //解析<Bean>元素...原创 2018-05-26 20:06:45 · 700 阅读 · 0 评论 -
Spring5源码分析(二) IOC 容器的初始化(三)
承接上一篇文章继续分析FileSystemXmlApplicationContextIOC容器创建的流程。 2.10 DefaultBeanDefinitionDocumentReader对Bean定义的Document对象解析 BeanDefinitionDocumentReader 接 口 通 过 registerBeanDefinitions 方 法调用其实现类DefaultBe...原创 2018-05-24 23:37:51 · 620 阅读 · 0 评论 -
Spring5源码分析(二) IOC 容器的初始化(二)
承接上一篇文章继续分析FileSystemXmlApplicationContextIOC容器创建的流程。 2.5 AbstractBeanDefinitionReader读取Bean定义资源,在其抽象父类AbstractBeanDefinitionReader 中定义了载入过程。 AbstractBeanDefinitionReader 的 loadBeanDefinitions ...原创 2018-05-23 23:58:21 · 739 阅读 · 0 评论 -
Spring5源码分析(二) IOC 容器的初始化(一)
一,概述 IOC 容器的初始化包括 BeanDefinition 的 Resource 定位、载入和注册这三个基本的过程。我们以 ApplicationContext 为例讲解来深入讲解,ApplicationContext系列容器也许是我们最熟悉的,因为 Web项目中使用的XmlWebApplicationContext就属于这个继承体系,还有 ClasspathXmlApplicati...原创 2018-05-22 16:35:55 · 1982 阅读 · 3 评论 -
Spring5源码分析(一) IOC和Spring 核心容器体系结构
1.什么是 IOC/DI? IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依...原创 2018-05-17 15:48:52 · 9510 阅读 · 2 评论 -
Spring5 系统架构
一,系统架构 Spring 总共大约有 20 个模块,由 1300 多个不同的文件构成。而这些组件被分别整合在核心容器 (Core Container)、AOP(Aspect Oriented Programming)和设备支持(Instrmentation)、 数据访问及集成(Data Access/Integeration)、Web、报文发送(Messaging)、Test,6 个模...原创 2018-04-28 11:31:02 · 8633 阅读 · 4 评论 -
Spring5 概述
一,概述 Spring 是一个开源的轻量级 Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架, 其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开 发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最 多的是关注如何使这些对象协作来完成所需功能,而且要低...原创 2018-04-26 16:53:54 · 1106 阅读 · 0 评论 -
Spring5.0源码导入IDEA(一)
1.下载Spring spring3.x以后托管到github上,所以下载源码直接到github上去下载。 github地址:spring-framework 由于我编译的是最新的的版本 spring-framework-5.0.4.RELEASE 下载地址: https://codeload.github.com/spring-projects/spring-framework...原创 2018-03-22 00:05:27 · 11441 阅读 · 19 评论