Spring源码
文章平均质量分 86
一颗贪婪的星
这个作者很懒,什么都没留下…
展开
-
Spring源码学习【一】初识IOC容器
目录一、IOC和DI二、Spring的IOC容器设计(一)BeanFactory系列容器接口(二)ApplicationContext系列容器接口一、IOC和DIIOC(Inversion Of Control):控制反转,是Spring的核心。所谓控制反转,就是将对象的创建和管理交由Spring容器控制,这是一种重要的面向对象设计思想,能够帮助我们设计出低耦合的程序。...原创 2018-07-18 10:23:47 · 887 阅读 · 0 评论 -
Spring源码学习【八】SpringMVC之DispatcherServlet
目录一、前言二、源码学习(一)初始化阶段 -> init()(二)响应客户请求 -> service()(二)销毁阶段 -> destroy()三、总结一、前言Web环境是Spring框架的重要应用场景,而SpringMVC又是Web开发中一个常用的框架,因此我们有必要学习一下SpringMVC的实现原理。回到Web项目的配置文件web.xml...原创 2018-09-27 11:59:07 · 431 阅读 · 0 评论 -
Spring源码学习【七】Web环境中启动和关闭IOC容器
一、前言前面的几章中学习了Spring IOC容器和AOP的实现,对这两个核心功能有了一定了解后,让我们一起学习一下IOC容器在常用的Web环境中是如何使用的,这也是Spring框架在Web环境中的重要应用场景。回忆一下在Web项目中配置Spring的过程,首先,我们需要在web.xml中进行如下配置:<listener> <listener-class&g...原创 2018-09-18 21:46:43 · 1073 阅读 · 2 评论 -
Spring源码学习【六】AOP原理解析(一)代理对象的生成
目录一、前言二、源码分析三、特别说明一、前言AOP(Aspect Oriented Programming 面向切面编程)是Spring框架的核心功能之一,关于AOP中一些概念的理解可以参考SpringAOP概念及其使用,下面以一个简单的例子作为Spring AOP源码学习的起点。首先,定义一个切面类CustomAspect,如下所示:public class C...原创 2018-08-21 16:41:48 · 1030 阅读 · 0 评论 -
Spring源码学习【五】填坑篇之PropertyValue解析
经过上一篇文章 Spring源码学习【四】依赖注入过程 对Spring依赖注入过程的分析,我们知道了在注入Property时会创建一个深拷贝副本,将这个副本持有的Property注入到Bean中,在创建的过程中会使用BeanDefinitionValueResolver解析PropertyValue,代码如下:BeanDefinitionValueResolver valueResolver...原创 2018-08-20 16:03:38 · 4535 阅读 · 0 评论 -
Spring源码学习【四】依赖注入过程
目录一、总览二、源码分析(一)getBean触发依赖注入(1)getBean(2)createBean(3)createBeanInstance(4)populateBean(二)Bean的预实例化一、总览通过前面的分析,我们知道了IOC容器在初始化过程中建立了BeanDefinition的数据结构,接下来就需要进行依赖注入,处理Bean之间的依赖关系。...原创 2018-08-20 15:24:41 · 5321 阅读 · 2 评论 -
Spring源码学习【三】填坑篇之BeanDefinition的解析
在 Spring源码学习【二】IOC容器的初始化(二)BeanDefinition载入 中,我们分析了BeanDefinition的载入过程,同时也留下了这样一句注释:// TODO:待深入学习AbstractBeanDefinition beanDefinition = parseBeanDefinitionElement(ele, beanName, con-tainingBean)...原创 2018-08-20 15:22:45 · 3503 阅读 · 0 评论 -
Spring源码学习【六】AOP原理解析(二)拦截器链
目录一、前言二、源码学习一、前言通过上一篇 Spring源码学习【六】AOP原理解析(一)代理对象的生成 的学习,我们知道了Spring是通过后置处理器来生成代理对象的,且获取到代理对象后会阻止原Bean的默认实例化行为,从而将代理对象提供给用户使用,并通过代理对象实现对目标对象的增强,有了这些知识储备,我们继续以JdkDynamicAopProxy为例,学习一下代理对象是如何对目...原创 2018-08-27 15:47:28 · 1399 阅读 · 2 评论 -
Spring源码学习【二】IOC容器的初始化(三)BeanDefinition注册
目录一、总览二、源码分析一、总览经过以上的分析,我们知道Document中BeanDefinition的解析是在DefaultBeanDefinitionDocumentReader中进行的,让我们回到DefaultBeanDefinitionDocumentReader的processBeanDefinition方法中,继续分析BeanDefinition解析后的注册过程。在pr...原创 2018-07-26 14:22:32 · 940 阅读 · 0 评论 -
Spring源码学习【二】IOC容器的初始化(二)BeanDefinition载入
目录一、总览二、源码分析(一)获取Document(二)解析Document一、总览经过前一篇(Spring源码学习【二】IOC容器的初始化(一)Resource定位)的分析,我们对IOC容器的初始化过程已经有了一定的了解。IOC的初始化由refresh()方法启动,最终对Resource的载入是由XmlBeanDefinitionReader处理的。参考上一节中6.loa...原创 2018-07-25 16:30:05 · 1186 阅读 · 1 评论 -
Spring源码学习【二】IOC容器的初始化(一)Resource定位
目录一、总览二、源码分析1. refresh2. obtainFreshBeanFactory3. refreshBeanFactory4-5. loadBeanDefinitions6. loadBeanDefinitions7. getResources8. getResource一、总览在使用IOC容器之前,需要定义一个Resource来定位容器B...原创 2018-07-24 16:14:50 · 1095 阅读 · 0 评论 -
Spring源码学习【八】SpringMVC之HandlerMapping
目录一、前言二、源码学习(一) 注册Bean(二) 初始化策略(三) 处理客户请求一、前言在前一篇中我们分析了DispatcherServlet的实现,在处理客户请求的doDispatch方法中提到了HandlerMapping,这是SpringMVC中请求控制的重要组件,用于将URL映射到Controller中。首先,回忆一下平时使用的SpringMVC配置文件,...原创 2018-09-27 17:09:44 · 287 阅读 · 0 评论