Spring之Bean的生命周期
2022-12-21 13:54:15 0 举报
Spring之Bean的生命周期。 https://blog.csdn.net/qq_35483542/article/details/128325501
作者其他创作
大纲/内容
得到路径下的.class的文件对象
扫描的组件就是上面注册的BeanFactory后置处理器,扫描是利用ASM技术进行class的读取与解析
解析scope与生成名称
实例化前回调
检测是否已经注册,没有就注册,否则报错
推断构造方法
生成处理注册BeanDefinition
postProcessBeanDefinitionRegistry
postProcessBeforeInstantiation
Resource
属性注入
BeanFactory的后置处理器调用
postProcessBeforeInitialization
设置BeanDefinition的默认值
InitializingBean
匹配成功构建BeanDefinition
如果当前BeanDefinition已经在Spring中存在就会被覆盖掉扫描出的类需要经过IncludeFilter与ExcludeFilter默认IncludeFilter会检测是否有@component注解
postProcessMergedBeanDefinition
初始化后
销毁
例如BeanNameAware
@Lazy、@Primary、@DependsOn、@Role、@Description
默认IncludeFilter会检测是否有@component注解
准备BeanFactory
合并BeanDefinition
Aware方法调用
实例化后,属性注入前
不是顶层类或静态内部类就不通过
实例化
获取扫描注解
准备运行环境及构键BeanFactory
postProcessBeanFactory
postProcessAfterInstantiation
如果是抽象类或接口不通过
解析处理基础注解
确保类的加载
通过ASM技术解析class
调用Bean后置处理器AutowiredAnnotationBeanPostProcessor.postProcessProperties进行注解注入
ScannedGenericBeanDefinition
解析注解中配置的路径
属性注入后
@PostConstruct
如果是抽象类但由@lookup注解可以通过
构造方法注册的reader里面有一个重要的方法调用AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);它注册了几个重要的后置处理器ConfigurationClassPostProcessorAutowiredAnnotationBeanPostProcessor等
set注入
DisposableBean@PreDestroy
@Conditional判断
excludeFilters、includeFilters判断
BeanDefinition后置处理器
ApplicationContext
组件扫描
初始化前
MetadataReader
postProcessAfterInitialization
实例化创建Bean
初始化
0 条评论
下一页