Spring Bean创建流程总结
2023-03-23 15:51:53 0 举报
Spring Bean创建流程总结
作者其他创作
大纲/内容
对象创建完成进行相关业务操作
调用执行BFPP,可以对BeanDefinition进行 增、删、改操作注意BFPP针对的是BeanFactory
Element
context、aop、自定义标签
invokeBeanFactoryPostProcessor
填充属性
(遍历需要创建的bean名称集合)完成对象的创建工作
设置某些属性值
createBeanInstance
RootBeanDefinition
销毁对象
doCreateBean
document
去收集/预解析属性元数据
@PostConstruct
执行BPP的after的方法
AutowiredAnnotationBeanPostProcessor
加载配置文件loadBeanDefinitions()
执行用户自定义的init-method
Bean标签
BeanNameAware、BeanClassLoaderAware、BeanFactoryAware
CommonAnnotationBeanPostProcessor
继承
开始
反射
ScannedGenericBeanDefinition
aop
取出bd调用getMergedLocalBeanDefinition合并为RootBeanDefinition
applyMergedBeanDefinitionPostProcessors()
xml
处理内容
实现
getBean
执行用户自定义的destroy方法
ConfigurationClassPostProcessor用来完成对相关注解的解析工作
@Resource、@PostConstruct、@PreDestroy
registryBeanPostProcessor
populateBean()
@Configuration、@ComponentScan、@ComponentScans、@Import、@Controller、@Service、@Component、@Bean 等
parseDefaultElement
invokeAwareMethods()
完成BPP的注册方便后续bean实例化之后调用BPP的before和after方法
创建容器对象refresh中的obtainFreshBeanFactory()
实例化BPP
invokeInitMethods()
parseCustomElement
DestructionAwareBeanPostProcessor的postProcessBeforeDestruction方法
ApplicatonContextAwareProcessor 继续实现Aware的set方法
创建容器对象DefaultListableBeanFactory
doGetBean
创建需要依赖的bean对象
@Autowired、@Value
如果bean实现了InitializingBean则执行InitializingBean的afterPropertiesSet方法
AnnotatedBeanDefinition
AbstractAutoProxyCreator
最后一次修改bean属性值
如果bean实现了DisposableBean接口执行DisposableBean的destroy方法
执行BPP的before的方法
initlizeBean()
xml 或注解
finishBeanFactoryInitialization
GenericBeanDefinition
createBean
BeanDefinitionReader
后续合并
其中
0 条评论
回复 删除
下一页