spring源码
文章平均质量分 84
分享一些学习spring源码过程中的总结
~小爷.
努力努力再努力
展开
-
Spring三级缓存处理循环依赖源码解读
上一篇文章进行了spring三级缓存在源码中使用的简要概括,因为没有实际类的举例,阅读起来有点绕。本篇博客是我自己在阅读spring源码过程中,对三级缓存是如何处理循环依赖问题的细节理解。一方面希望对你有所帮助,另一方面也是对自己阅读源码的一个完整的总结过程。话不多说,进入正题。 1. 准备工作 准备工作比较简单,准备两个类,然后类中相互引入作为对方的属性,在spring配置文件中注入,然后通过ClassPathXmlApplicationContext读取spring的...原创 2022-05-12 16:01:57 · 412 阅读 · 0 评论 -
Spring使用三级缓存解决Bean的循环依赖流程简括
前面的几篇博客,更多的关注点是bean的创建过程的一些理解梳理,更多的属于基础部分,在实际开发中,业务类不大可能是单独存在,极大可能需要类之间相互引用,这就会导致循环依赖问题,循环依赖我相信大家都听过,spring也有考虑到这个问题,并给出了解决方案,就是通过使用三级缓存来处理,三级缓存,实际上就是DefaultSingletonBeanRegistry类中的三个Map集合,对应的Map集合源码如下: //一级缓存 private final Map<String, Object&...原创 2022-05-11 23:13:25 · 184 阅读 · 0 评论 -
Spring创建Bean过程简要总结
经过了前面两个大篇幅的对spring源码的大致梳理,大致上可以总结出spring创建bean的一些关键逻辑。本文是对之前文章的一个简要的总结,并不是spring创建bean的完整过程,我大致梳理流程如下: 创建ClassPathXmlApplicationContext对象,传入spring配置文件 在ClassPathXmlApplicationContext的构造方法中调用refresh()方法 refresh()方法中有两个重要步骤, 一个是创建BeanFactory的逻辑,调...原创 2022-05-10 11:06:05 · 258 阅读 · 0 评论 -
Spring中BeanDefinition的探索
在之前探索创建Bean的过程中,我们看到一个出现很频繁的类,RootBeanDefinition。该类中存储了一个bean的所有信息,后续创建Bean对象就是根据一个bean的BeanDefinition,然后通过反射创建的。该类的类关系图如下: 从图中可知,RootBeanDefinition是BeanDefinition的一个实现类。既然后续创建需要用到RootBeanDefinition,那么肯定在使用之前就得创建出来才行。我们本文就来探究一下RootBeanDefinition...原创 2022-05-08 00:44:50 · 191 阅读 · 0 评论 -
Spring获取Bean的过程探索
上一篇Spring创建Bean我们知道了,Spring创建Bean后,会将Bean存放在容器的singletonObjects中,那么获取一个bean的过程又是如何呢?我们还是使用之前用到的debug断点调试法来探究一下。 1. 获取Bean源码阅读 我们知道,Spring中获取一个Bean是使用getBean(beanName)来获取,那么我们来跟踪getBean(beanName)的源码,看看获取bean的逻辑,getBean(beanName)的源码如下: public Obj...原创 2022-05-04 09:54:35 · 283 阅读 · 0 评论 -
探索Spring创建Bean过程
Spring对于Java程序员来说,是必须要掌握的一个框架。工作中我们基本上也是使用spring来进行日常的开发。却对项目中的bean创建过程并不是很了解。我自己就属于这种情况。也在网上看过很多的视频,但是都没有将看过的知识点进行总结。导致对于源码总是一知半解的状态。本篇文章用来记录我在探索spring创建bean的源码总结。 1. 准备工作 阅读源码,个人觉得最好的方法是DEBUG断点调试法,一步一步的看下去,最终找到自己想要的知识,在DEBUG之前就需要准备一个spr...原创 2022-05-03 19:27:11 · 683 阅读 · 0 评论