
Spring 源码分析
Spring源码学习分袖
KingdomCoder
技术发烧友
展开
-
图解Spring循环依赖
1. 什么是循环依赖循环依赖就是循环引用,也就是两个或者两个以上的Bean相互持有对方,行程闭环。比如:对象A依赖对象B,对象B又依赖A。如下图:2.Spring中循环依赖代码演示@Servicepublic class ProductService { @Autowired private OrderService orderService;}@Servicepublic class OrderService { @Autowired private ProductServi原创 2021-08-10 20:14:39 · 506 阅读 · 0 评论 -
图解Spring Bean 的生命周期
前情提要-阅读源码的感受 :这一段时间花了些时间去学习源码,从自己的主观感受来讲,阅读源码是一个非常需要耐心和总结的一个过程,因为源码的逻辑复杂性和扩展性,对于一些同学的学习门槛就会提高不少,作为经历过来的人来讲,为了缓解那些想读源码,但是又没有很好思路的同学的痛苦,我意识到通过图解的方式尽可能帮助你们度过入门门槛。图解Spring生命周期1. Spring生命周期主体核心流程2、SpringBean生命周期源码导读图解...原创 2021-07-24 11:52:32 · 413 阅读 · 0 评论 -
Spring IOC 注解BeanDefinition加载详解
示例代码@ComponentScan("org.springframework.examples")public class AnnotationConfigApplicationContextTest { public static void main(String[] args) { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationC原创 2021-07-20 20:07:46 · 620 阅读 · 6 评论 -
BeanDefinition 在IOC的解析和注册(八)
上文我们介绍了BeanDefinition的资源加载过程分析,将我们定义好的Bean资源文件载入并转换成了Document对象,原创 2020-04-28 18:07:27 · 235 阅读 · 0 评论 -
IOC之BeanDefinition的加载(七)
1.概述对于IOC容器来说,BeanDefinition的加载相当于把定义的BeanDefinition在IOC容器中转化成一个Spring内部表示的数据结构的过程,IOC容器对Bean的管理和依赖注入功能的实现,是对其特有的BeanDefinition进行各种操作来完成的。这些BeanDefinition数据在IOC中是通过一个HashMap来保持和维护的。下面我们将通过DefaultLi...原创 2020-04-23 20:56:38 · 213 阅读 · 0 评论 -
BeanDefinition的Resource定位分析(六)
1.概述通过源码我们发现,资源的定位问题主要发生在容器初始化过程中完成的,FileSystemXmlApplicationContext、ClassPathXmlApplicationContext 在一个构造器函数中执行refresh()容器启动的过程中完成的,当然这边启动过程中容器会有大量的复杂的初始化操作,资源的定位只是其中的一小环节。下面我们就FileSystemXmlApplica...原创 2020-04-23 18:23:33 · 266 阅读 · 0 评论 -
IOC的初始化过程(五)
1.概述简单来说IOC容器的初始化过程是通过refresh()方法来启动的,这个方法表示IOC容器的正式启动。具体来说这个启动主要包含BeanDefinition的Resource定位、载入和注册三个过程。2.IOC启动流程说明第一个过程是Resource定位过程。 这个 Resource定位指的是BeanDefinition的资源定位(例如我们平时Spring项目中配置的各种xm...原创 2020-04-22 19:50:47 · 581 阅读 · 0 评论 -
BeanFactory基础容器的设计原理(四)
BeanFactory接口提供了使用IOC容器的规范,在这个基础上,Spring还提供了符合这个IOC容器接口的设计原理。下面我们就XmlBeanFactory的实现为例说明简单IOC容器的设计原理。...原创 2020-04-21 16:24:30 · 294 阅读 · 0 评论 -
Spring IOC容器的核心接口设计(三)
Spring IOC容器的接口设计下面针对图中的接口关系做一个详细的介绍从接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory是一条主要的BeanFactory的设计路径,在这条接口设计路径中BeanFactory定义了基本的IOC容器的规范。在这个接口定义中,包括了getBean()这样的IOC容器的基本方法。而H...原创 2020-03-13 20:53:39 · 664 阅读 · 1 评论 -
Spring 统一资源加载策略(二)
1.统一资源接口的子类结构WritableResource: 可写资源接口ByteArrayResource :二进制数组资源ClassPathResource:类路径下的资源,资源以相对路径的方式表示FileSystemResource:文件系统资源,资源以文件系统的方式表示如:D://data/beans.xmlServletContextPathResource:为访问Web容...原创 2020-01-20 18:07:01 · 1512 阅读 · 0 评论 -
Spring 的整体架构和环境搭建(一)
1.整体架构Spring是一个分层架构,它包含一些列的功能要素,并被分为大约20个模块,如图:这几个模块主要总结为如下几个部分:① Core ContaineCore Container (核心容器)包含有Beans、Core、Context和Expression Language。Core和Beans是框架的基础模块,控制IOC(控制反转)和DI(依赖注入)。Core模块主要包含S...原创 2020-01-19 18:03:58 · 401 阅读 · 0 评论