Spring IOC 核心类简述

172 阅读1分钟

核心类的来源

我认为spring ioc 中核心的类其实就是在spring容器初始化中对bean对象的生成、管理和消亡起着关键性作用的类

bean对象总体生成逻辑

bean对象的生成其实可以分为两步:

1.通过一系列BeanFactoryPostProcessor抓取BeanDefinition信息

2.根据BeanDefinition信息生成bean,当然生成bean前后可以根据BeanPostProcessor对bean做一系列的事情

补充:还有很多接口在相应的地方可以对BeanDefinition和bean对象做相关操作

核心类(只关注入口)

  1. AbstractApplicationContext 核心方法:refresh 方法。可以算是spring入口
  2. DefaultListableBeanFactory 核心方法:docreateBean方法。 创建bean入口
  3. DefaultSingletonBeanRegistry 核心对象:一级缓存:Map<String, Object> singletonObjects 二级缓存:Map<String, Object> earlySingletonObjects三级缓存:Map<String, ObjectFactory<?>> singletonFactories
  4. BeanFactoryPostProcessor 用于抓取BeanDefinition信息
  5. BeanPostProcessor 在生成bean对象前后做一系列事情
  6. ConfigurationClassPostProcessor BeanFactoryPostProcessor的实现类 spring实现自动装配的关键类也是注册BeanDefinition信息的核心类

后续会有增加,但是现在自己看spring源码基本只需要这几个类或者接口然后往下找即可