![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring源码阅读
文章平均质量分 85
pumpkin_cooker
这个作者很懒,什么都没留下…
展开
-
spring源码笔记(六) ----spring使用三级缓存解决循环依赖问题
本文主要内容分以下几个方面阐述:1:什么是循环依赖?2:什么是三级缓存?每一级缓存中都存储的是什么内容?3:spring是如何解决循环依赖问题的,为什么使用三级缓存而不是二级缓存来解决循环依赖问题?1:什么是循环依赖?举个简单实例,当有两个类A类,和B类。public class A{ private B b;}public class B{ private A a;}A类中有一个B类字段,而B类中有一个A类字段。此时,我们要创建一个A类型..原创 2021-03-04 22:22:18 · 379 阅读 · 0 评论 -
spring源码笔记(五) ----Bean的创建流程分析
此处介绍的Bean的创建流程是既没有循环依赖,也没有Aop代理的,通过默认构造创建的Bean的详细调用流程。整个过程由doCreateBean方法进行处理。第一步:通过无参默认构造创建类的实例。为什么spring中的Bean一定要提供一个无参默认构造呢?因为在上层调用链中,调用doGetBean(String name, @Nullable Class<T> requiredType, @Nullable Object[] args, boolean typeCheckO.原创 2021-02-22 23:17:01 · 318 阅读 · 0 评论 -
spring源码笔记(四) ----Bean的创建源码调用链分析
spring容器中创建一个Bean包含了调用构造方法创建对象,属性填充,直到缓存到单例池中的全过程分析。在属性填充也就是DI的过程中,spring又提供了三级缓存来解决循环依赖的问题。原创 2021-02-21 12:45:16 · 194 阅读 · 0 评论 -
spring源码笔记 (三)---- 创建用户自定义Bean之前的准备工作
在前边的两篇内容中,我们了解到了BeanDefinition的相关知识,以及创建BeanDefinition以后,通过BeanFactoryPostProcessor接口对BeanDefinition的定制化修改操作。BeanDefinition加载与定制化修改完成以后,接下来要做什么呢?是不是马上就要开始创建Bean了呢?spring在开始创建用户自定义Bean之前,还做了对BeanPostProcessor接口实现类的实例化。这个接口BeanFactoryPostProcessor接口在名称上很原创 2021-02-14 21:21:27 · 171 阅读 · 1 评论 -
spring源码笔记 (二)---- BeanDefinition的加载机制
在中对BeanDefinition类的定义做了初步的了解以后,我们了解到BeanDefinition与我们用户创建的普通Bean是一一对应的,用户每创建一个Bean,就会有一个BeanDefinition与之对应。他们共同作为了创建一个Spring中Bean的信息来源,那么他们两者的加载时机相同吗?有没有先后顺序?BeanDefinition是何时加载的,通过什么途径加载的呢?真正提供使用的BeanDefinition是只包含接口中的那些信息还是又做了拓展?本文将会对这些问题一一解答。一、Bean...原创 2021-01-30 23:31:45 · 466 阅读 · 0 评论 -
spring源码笔记(一) ---- BeanDefinition类详解
网上写spring源码的文章很多,为什么我还想要再写一遍呢。有很重要的一点,就是每个人在阐述源码的时候侧重点不同。当我对spring的某一部分有疑惑的时候,去翻看别人写的博客,翻了很多篇,到后来才发现,我的疑惑依然没有得到解答。很大程度是因为别人写的标题就是我存在的问题,但是别人写的重点却不是我想要了解的点。于是大多数时候在网上看文章解决问题的过程就像是在点燃一个蔫炮。你搜索A问题的关键字,就好像双手颤颤着点燃了引信,然后你在A问题给出的解决方案里,发现B问题是解决A问题的前提,然后,你转头去...原创 2021-01-29 22:39:55 · 410 阅读 · 2 评论