(一)Spring启动过程(概括)

本文概括了Spring的启动过程,重点讲解了AnnotationConfigApplicationContext如何在BeanFactory基础上进行初始化,包括BeanDefinition的注册、refresh方法的执行,如BeanFactory的准备工作、BeanDefination信息增强、Bean实例化及Bean的后处理等步骤。建议可通过B站视频或相关博客深入学习。

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

Spring启动过程(概括)

Spring在BeanFactory基础上提供了一些列具体容器的实现,其中AnnotationConfigApplicationContext是一个用来管理注解bean的容器,从AnnotationConfigApplicationContext的实现结构图中可以看出:

  • AnnotationConfigApplicationContext继承GenericApplicationContext这个通用应用上下文,GenericApplicationContext内部定义了一个DefaultListableBeanFactory实例,GenericApplicationContext实现了BeanDefinitionRegistry接口,所以可以通过AnnotationConfigApplicationContext实例注册bean defintion,然后调用refresh()方法来初始化上下文。
  • AnnotationConfigApplicationContext继承AbstractApplicationContext,AbstractApplicationContext提供了ApplicationContext的抽象实现。
public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) {
   
        //1.初始化bean定义读取器和扫描器;
        //2.调用父类GenericApplicationContext无参构造函数,初始化一个BeanFactory: DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory()
        //3.注册Spring自带的bean,共5个  包括: ConfigurationClassPostProcessor
        //  AutowiredAnnotationBeanPostProcessor  CommonAnnotationBeanPostProcessor
        // EventListenerMethodProcessor  DefaultEventListenerFactory
    	this();
    
        // 注册AppConfig, ApplicationContext传入的配置类
        //此处只是注册了 @Configuration 注释的配置类,
        //register方法 作用是 将对应的Bean生成BeanDefinition,放到spring容器中;容器是一个 map,key是beanName(xml<Bean>标签里 id),value是BeanDefinition
        register(annotatedClasses);
    
        //刷新容器,主要完成了 @Component 等相关注解注释的bean的初始化工作,将bean加载到 spring容器管理(与SpringBoot有相似部分)
        refresh();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值