Springframework源码
文章平均质量分 83
请给我一根烟的时间
请给我一根烟的时间,我将重新上路
展开
-
Spring源码私家笔记——Bean的元信息BeanDefinition加载流程
上一个回合,我们提到BeanFactory已经被创建了,那紧接着,我们看到BeanDefinition就进行加载了,我们对着核心源码一一道来。 自此,我们就已经得到了一个BeanFactory对象,这之后,我们将使用BeanFactory实例完成一系列的后续工作。在refreshBeanFactory中,则有非常重要的一步——loadBeanDefinitions(beanFactory),这里面的源码真的是很庞大,我们还是挑重点进行讲解。 protected void loadBeanDefinitio原创 2022-05-21 00:27:36 · 342 阅读 · 0 评论 -
Spring源码私家笔记——BeanFactory被创建
Spring源码 - BeanDefinition的加载 重点关注org.springframework.context.support.AbstractApplicationContext#refresh中调用的 obtainFreshBeanFactory方法,这个方法也在AbstractApplicationContext中 /** * Tell the subclass to refresh the internal bean factory. * @return the fresh Bea原创 2022-05-19 00:35:00 · 274 阅读 · 1 评论 -
Spring源码私家笔记—— ApplicationContext.refresh()方法浅析
从本章开始我们将开始进入Spring容器真正的刷新启动过程,直接点击或者debugger进入AbstractApplicationContext的refresh()方法。这里再次提示一下大家,在先前的提到过的“胸有大纲,心中不慌”,大家务必要克制自己挨个debugger进refresh的每个方法进行查看的冲动。 大家想啊,Spring的作者把一个个的对象和方法封装出来,就是想要屏蔽底层实现的复杂性,那我们就按照这一个个方法名先理解个大概。建议大家直接把springframework的官方源码clone下来,原创 2022-05-04 18:49:20 · 805 阅读 · 0 评论 -
Spring源码私家笔记——容器启动前传:Environment就绪,初始化ApplicationContext
所有尝试分析Spring源码的同学都知道refresh()方法是源码中最为关键的一部分。那么在这之前,都做了什么准备工作,以及对于整个Spring容器启动的意义是什么呢? 笔者对这个过程进行了一次简单的梳理(如下图),试图把这部分流程解释清楚。 1. super(parent) 我们使用ClassPathXmlApplicationContext进行测试 public class Test { public static void main(String[] args) { Cla原创 2022-05-04 12:29:33 · 564 阅读 · 0 评论 -
Spring源码私家笔记——Spring启动流程概述
在分析Spring源码之前,很容易陷入的一个误区就是,debugger一路点进去,然后迷失在茫茫的源码之中。 其实分析源码跟我们做系统开发一样,不会上来就开始撸代码,而是先做好系统的设计,然后才开始分工合作。正所谓“胸中有大纲,心中不慌张”,无论我们debugger到了何处,想想我们在地图的何处,就可以导航回去。原创 2022-05-03 18:47:54 · 325 阅读 · 1 评论