栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring bean生命周期

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring bean生命周期

spring bean生命周期

阶段1:处理名称,检查缓存

先把别名解析为实际名称,再进行后续处理

若要FactoryBean本身,需要使用&名称获取

singletonObjects是一级缓存,放单例成品对象

singletonFactories是三级缓存,放单例工厂

earlySingletonObjects是二级缓存,放单例工厂的产品,可称为提前单例对象

阶段2:处理父子容器

1.父子容器的bean名称可以重复

2.优先找子容器的bean,找到了直接返回,找不到继续到父容器找

阶段3: dependsOn

dependson用在非显式依赖的bean的创建顺序控制

阶段4:按Scope创建bean

scope理解为从xxx范围内找这个bean更加贴切

singleton scope表示从单例池范围内获取bean,如果没有,则创建并放入单例池

prototype scope表示从不缓存bean,每次都创建新的

request scope表示从request对象范围内获取 bean,如果没有,则创建并放入request …

阶段5:创建bean

阶段5-1:创建bean 实例 AutowiredAnnotationBeanPostProcessor选择构造

优先选择带@Autowired注解的构造·若有唯一的带参构造,也会入选

采用默认构造

如果上面的后处理器和BeanDefiniation都没找到构造,采用默认构造,即使是私有的

阶段5-2:依赖注入

优先级高到低:按照精确匹配,按照名字匹配,按照类型自动匹配。

阶段5-3:初始化

阶段5-4:注册可销毁bean 判断依据

如果实现了DisposableBean或AutoCloseable接口,则为可销毁bean

如果自定义了destroyMethod,则为可销毁bean

如果采用@Bean没有指定destroyMethod,则采用自动推断方式获取销毁方法名(close,shutdown)

如果有@PreDestroy标注的方法

存储位置

singleton scope的可销毁bean会存储于beanFactory的成员当中

自定义scope的可销毁bean会存储于对应的域对象当中

prototype scope不会存储,需要自己找到此对象销毁

存储时都会封装为 DisposableBeanAdapter类型对销毁方法的调用进行适配 阶段6:类型转换 阶段7:销毁bean

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号