spring 启动原理(过程)

Spring启动原理,就是构造ApplicationContext对象以及调用refresh()方法的过程。
首先,Spring启动过程主要做了以下几件事情:
  1. 构造一个BeanFactory对象
  
  2. 解析配置类,得到BeanDefinition,并注册到BeanFactory中
     a. 解析@ComponentScan,此时就会完成扫描
     b. 解析@Import
     c. 解析@Bean

  3. 因为ApplicationContext还支持国际化,所以还需要初始化MessageSource对象
  
  4. 因为ApplicationContext还支持事件机制,所以还需要初始化ApplicationEventMulticaster对
     象
     
  5. 把用户定义的ApplicationListener对象添加到ApplicationContext中,等Spring启动完了就要
     发布事件了
     
  6. 创建非懒加载的单例Bean对象,并存在BeanFactory的单例池中。
  
  7. 调用Lifecycle Bean的start()方法
  
  8. 发布ContextRefreshedEvent事件
  
由于Spring启动过程中要创建非懒加载的单例Bean对象,那么就需要用到BeanPostProcessor,所
以Spring在启动过程中就需要做两件事:
  1. 生成默认的BeanPostProcessor对象,并添加到BeanFactory中
      a. AutowiredAnnotationBeanPostProcessor:处理@Autowired、@Value
      b. CommonAnnotationBeanPostProcessor:处理@Resource、@PostConstruct、              @PreDestroy
      c. ApplicationContextAwareProcessor:处理ApplicationContextAware等回调
      
  2. 找到外部用户所定义的BeanPostProcessor对象(类型为BeanPostProcessor的Bean对象),
  并添加到BeanFactory中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值