手写简化版 Spring 框架,了解 Spring 核心原理,为后续再深入学习 Spring 打下基础;摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。
手写简化版 Spring 是对 IOC 容器的源码分析。
记录 BeanPostProcessor 和 BeanFactoryPostProcessor 之间的区别,总是容易记混。
BeanPostProcessor:bean后置处理器,bean对象创建赋值之后,初始化前后进行拦截工作的。
BeanFactoryPostProcessor:beanFactory后置处理器,BeanFactory标准初始化之后调用。即所有的bean定义已经加载到beanFactory,但是bean对象的实例还未创建。
BeanFactoryPostProcessor在 invokeBeanFactoryPostProcessor(beanFacoty) 方法中得到执行。按照 BeanFactoryPostProcessor 类型查找组件并执行 postProcessBeanFactory()
BeanDefinitionRegistryPostProcessor: 是 BeanFactoryPostProcessor 的子接口。其内部定义了 postProcessBeanDefinitionRegistry() 方法。
在所有bean定义信息将要被加载,bean实例还未创建时进行调用。先于 BeanFactoryPostProcessor 执行。
- @Configuration&@Bean
- @ComponentScan
- custom-TypeFilter
- @Scope
- @Lazy-bean
- @Conditional
- @Import
- ImportSelector
- ImportBeanDefinitionRegistrar
- FactoryBean