Spring BeanDefinition 也分父子?

在 Spring 框架中,BeanDefinition 是一个核心概念,用于定义和配置 bean 的元数据,虽然在实际应用中,我们一般并不会或者很少直接定义 BeanDefinition,但是,我们在 XML 文件中所作的配置,以及利用 Java 代码做的各种 Spring 配置,都会被解析为 BeanDefinition,然后才会做进一步的处理。BeanDefinition 允许开发人员以一种声明性的方式定义和组织 bean,这里有很多属性,今天松哥单纯的来和小伙伴们聊一聊它的 parentName 属性,parentName 属性在 BeanDefinition 中扮演着重要的角色,用于建立 bean 之间的父子关系。

阅读更多

透过源码,捋清楚循环依赖到底是如何解决的!

[TOC]

以下内容基于 Spring6.0.4。

关于 Spring 循环依赖,松哥已经连着发了三篇文章了,本篇文章松哥从源码的角度来和小伙伴们捋一捋 Spring 循环依赖到底是如何解决了。如果没看过前面的文章建议先看一下,大家在面试中如果遇到循环依赖相关的问题,其实看前面三篇文章就可以答出来了,本文主要是从源码角度来验证一下我们前面文章所讲的内容是无误的。

阅读更多

Spring 源码解读视频来啦

关注松哥最近文章的小伙伴可能都发现了,松哥最近一直在更 Spring 源码相关的文章,而且小伙伴们的评价都还不错哦~

阅读更多

Spring 容器原始 Bean 是如何创建的?

以下内容基于 Spring6.0.4。

这个话题其实非常庞大,我本来想从 getBean 方法讲起,但一想这样讲完估计很多小伙伴就懵了,所以我们还是一步一步来,今天我主要是想和小伙伴们讲讲 Spring 容器创建 Bean 最最核心的 createBeanInstance 方法,这个方法专门用来创建一个原始 Bean 实例。

阅读更多

Spring 中一个少见的引介增强 IntroductionAdvisor

我们平时做 AOP 开发的时候,基本上都是增强某一个方法,在某一个方法执行之前或者执行之后做一些事情,这种叫做 PointcutAdvisor,实际上,Spring 中的 Advisor 大致可以分为两种类型,除了 PointcutAdvisor 之外,还有另外一种 Advisor 叫做 IntroductionAdvisor,因为最近想和小伙伴们聊一聊 Spring AOP 的源码,看源码有一个前提就是得先掌握 Spring 的各种用法,这样看源码的时候往往就有一种醍醐灌顶的感觉,否则看源码的时候就容易懵!

阅读更多