【Spring】普通单例 Bean 的创建与三级缓存之间的交互
1 前言
Bean 的创建周期大家可能都知道,三级缓存大家也都知道,那么他俩之间交互的细节如何?这节我就捋一下普通 Bean 的一个创建过程和三级缓存之间的交互。
2 图解剖析
2.1 普通无代理 Bean 创建
大概有4次交互:
(1)getBean 的时候,getSingleton(beanName)先从三级缓存中逐个从一级到三级依次获取
(2)单例的话,getSingleton(beanName, factory) 进行创建,创建前后会分别往 singletonsCurrentlyInCreation 进行添加和移除
(3)创建的一路上 createBeanInstance 实例化对象出来后,有个提前暴露的判断,我看普通的 Bean 还是需要增强的都会往第三级缓存中放
(4)第二步的 getSingleton(beanName, factory) 创建完后,往第一级缓存中存放,并删除二三级缓存
下面是具体的执行过程哈:
2.2 普通有代理 Bean 创建
有代理的 Bean 和 上边这个没有代理的唯一区别就是初始化 Bean 的方法里的 初始化的后置处理器,会进行 Bean 代理的判断,从而生成代理对象出来哈:
3 小结
下节我再描述一个带 AOP 的增强 Bean 的创建与三级缓存的交互哈,有理解不对的地方欢迎指正哈。
分类:
源码 / Spring IOC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了