核心类的来源
我认为spring ioc 中核心的类其实就是在spring容器初始化中对bean对象的生成、管理和消亡起着关键性作用的类
bean对象总体生成逻辑
bean对象的生成其实可以分为两步:
1.通过一系列BeanFactoryPostProcessor抓取BeanDefinition信息
2.根据BeanDefinition信息生成bean,当然生成bean前后可以根据BeanPostProcessor对bean做一系列的事情
补充:还有很多接口在相应的地方可以对BeanDefinition和bean对象做相关操作
核心类(只关注入口)
- AbstractApplicationContext 核心方法:refresh 方法。可以算是spring入口
- DefaultListableBeanFactory 核心方法:docreateBean方法。 创建bean入口
- DefaultSingletonBeanRegistry 核心对象:一级缓存:Map<String, Object> singletonObjects 二级缓存:Map<String, Object> earlySingletonObjects三级缓存:Map<String, ObjectFactory<?>> singletonFactories
- BeanFactoryPostProcessor 用于抓取BeanDefinition信息
- BeanPostProcessor 在生成bean对象前后做一系列事情
- ConfigurationClassPostProcessor BeanFactoryPostProcessor的实现类 spring实现自动装配的关键类也是注册BeanDefinition信息的核心类
尾
后续会有增加,但是现在自己看spring源码基本只需要这几个类或者接口然后往下找即可