Spring Bean的生命周期
2024-06-19 17:54:18 0 举报
Spring Bean的生命周期
作者其他创作
大纲/内容
当前类和某个 ExcludeFilter 匹配
根据当前类生成一个 ScannedGenericBeanDefinition
是
bean 扫描是在执行 BeanFacotry后置处理器中进行的
加载类
是否是顶级类、静态内部类
生成 beanName
扫描结束
实例化
注册 beanName 和 BeanDefinition 到 Spring 容器中
执行 BeanFactory 后置处理器
是否是接口
执行 Aware
是否有 @Lookup 注解
BeanDefinition 的后置处理
不通过
初始化
排除
@Conditional 匹配筛选,匹配成功?
是否是抽象类
进行扫描
Spring 扫描底层流程
否
填充属性
推断构造方法
初始化 BeanFactory
包路径
实例化后
通过此类
注意是文件对象(可理解为 File 对象),而不是 Class 对象
获取到某些 BeanDefinition
调用 AnnotationBeanNameGenerator 生成 beanName
解析 @Lazy、 @Primay 、 @DependsOn、@Role 、 @Description 等注解并赋值给 BeanDefinition 对应的属性
当前 beanName 是否在 Spring 容器中已存在
启动 ApplicationContext
报错
当前类和某个IncludeFilter匹配
实例化前
默认情况下,Spring 会有一个 @Component 注解的 includeFilter
利用 ASM 技术解析每个 Class 文件对象,获取到 Class 元数据信息
遍历每个 BeanDefinition
合并 BeanDefinition
排除此类
Bean的生命周期:在Spring中,一个Bean是如何生成的,如何销毁的
填充属性后
创建 BeanFactory
获取到所有 class 文件对象
初始化后
解析 @Component 注解所指定的 beanName,没有指定则默认生成
生成 BeanDefinition
初始化前
给 BeanDefinition 对象中的属性赋默认值
0 条评论
下一页