prajnalab

12、推断@Bean方法底层源码解析

上一篇文章中,我们详细阐述了构造方法推断的含义,并对其源码进行了具体分析。然而,除了构造方法推断外,我们还可以通过@Bean注解的方式来注册Bean。在分析org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac

hexon hexon 发布于 2026-03-16

11、推断构造方法底层源码解析

在之前的文章中,我们详细分析了Spring依赖注入的执行流程。然而,在依赖注入发生之前,Bean的实例化过程需要首先确定使用哪个构造方法来完成对象的创建。这一关键步骤通常被称为构造方法推断。虽然我们在前面的内容中简要提及了这一机制,但并未深入其实现细节。本文将聚焦于Spring是如何在多个构造方法中

hexon hexon 发布于 2026-02-12

10、Bean销毁过程生命周期源码解析

上一篇文章我们主要分析了 Bean 创建过程的源码,特别是在 doCreateBean 方法的末尾提到了与 Bean 销毁相关的逻辑代码。这说明在 Bean 的创建阶段就已经与它的销毁机制建立了联系——Spring 会在创建时判断该 Bean 是否需要销毁,并收集对应的销毁方法。当然,此时并不会直接

hexon hexon 发布于 2026-01-12

Spring配置类深度解析:从@Configuration到代理模式的完整指南

为什么需要理解Spring配置类? 在Spring框架的日常开发中,我们经常会使用@Configuration、@Component等注解来定义配置类。但你是否曾想过: 为什么有的配置类使用@Configuration,有的只用@Component?</

hexon hexon 发布于 2026-01-06

9、Bean创建过程生命周期源码解析

前面我们主要学习了Spring启动过程中的的扫描逻辑和一些前置的铺垫知识,扫描主要是获取到BeanDefinition。获取后其实就是要基于BeanDefinition去创建Bean对象了。上篇文章中我们分析FactoryBean时,其实已经开始分析getBean方法了。那么从这一篇文章开始将进入g

hexon hexon 发布于 2025-12-27

8、FactoryBean创建过程底层源码解析

注意:前面学习了ComponentsIndex机制,在学习本文前请把META-INF/spring.components这个文件里面的内容删除或者注释,否则会有影响。 这个文件本质是一个properties的格式,所以可以用#注释,Java原生方法读取会忽略被注释的行。 为什么先学习FactoryB

hexon hexon 发布于 2025-12-23

7、扩展:什么是JFR?Spring中是如何利用它的?

在前面看Spring源码的过程中,有下面的代码: public AnnotationConfigApplicationContext() { StartupStep createAnnotatedBeanDefReader = getApplicationStartup().start("s

hexon hexon 发布于 2025-12-20

6、扩展:ScopedProxyMode的作用和底层实现

在分析BeanDefinition扫描过程源码时,@ComponentScan注解中有一个ScopedProxyMode,本节我们来了解下它的作用和原理。 内容回顾 其实源码中有两个地方有这个ScopedProxyMode,一个处是在org.springframework.context.annot

hexon hexon 发布于 2025-12-17

5、扩展:ComponentsIndex机制的作用和底层实现

我在分析BeanDefnition扫描过程中,有下面这样一段源码: org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#findCandidateComponents public Se

hexon hexon 发布于 2025-12-17

4、BeanDefinition扫描过程源码解析

经过前两篇文章的学习,我们已经具备了阅读源码的基础。接下来,我们将正式进入 Spring Bean 生命周期 的学习。 建议的学习路径是:先理解 Bean 的生命周期,再分析容器的启动过程。原因在于: 1. Bean 的扫描与注册是生命周期的起点 容器启动时所做的核心工作之一,就是扫描并解析 Bea

hexon hexon 发布于 2025-12-17