1.【spring源码解析】俯瞰spring bean的生命周期

本文详细解析了Spring框架中IOC容器的创建过程,包括通过JavaConfig风格与注解方式创建容器的具体步骤,以及refresh方法的核心流程,为读者深入理解Spring容器的工作原理提供了清晰的指引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Spring 容器高层视图(高度概括版)

Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。

①创建springIOC容器的两种方式

②以JavaConfig风格+注解的方式来创建IOC容器为例查看创建的过程

//根据参数类型可以知道,其实可以传入多个annotatedClasses,但是这种情况出现的比较少
public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) {
    //调用无参构造函数,会先调用父类GenericApplicationContext的构造函数
    //父类的构造函数里面就是初始化DefaultListableBeanFactory,并且赋值给beanFactory
    //本类的构造函数里面,初始化了一个读取器:AnnotatedBeanDefinitionReader read,一个扫描器ClassPathBeanDefinitionScanner scanner
    //scanner的用处不是很大,它仅仅是在我们外部手动调用 .scan 等方法才有用,常规方式是不会用到scanner对象的
    this();
    //把传入的类进行注册,这里有两个情况,
    //传入传统的配置类
    //传入bean(虽然一般没有人会这么做
    //看到后面会知道spring把传统的带上@Configuration的配置类称之为FULL配置类,不带@Configuration的称之为Lite配置类
    //但是我们这里先把带上@Configuration的配置类称之为传统配置类,不带的称之为普通bean
    //配置文件中每一个<bean>解析成一个BeanDefinition对象,并保存到BeanDefinitionRegistry中;
    register(annotatedClasses);
    //刷新
    refresh();
}

③其中refresh方法是重点,refresh方法的流程图如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值