
Spring源码中如何获取bean
发布日期:2021-05-18 06:39:12
浏览次数:21
分类:精选文章
本文共 661 字,大约阅读时间需要 2 分钟。
关于Spring中通过 ApplicationContext.getBean() 调用单例bean的过程,实际上遵循如下流程:当我们在代码中编写 applicationContext.getBean()
时,底层实际执行的操作与图示中的流程相当相似。从代码结构来看,大部分类的位置在相同的层级上,只有一个具体实现类独自处于不同的层次,形成了独立的整体结构。
在观察代码层次结构时,可以发现一个显著的特点:几乎所有相关类都排列在同一水平线上,只有一个特定的实现类位于底层。这意味着这些类在结构上实质上是通过某种方式连接起来的,而不是孤立存在的。
最右侧的 DefaultSingletonBeanRegistry 负责存储和管理所有单例bean,并提供外部调用的 getSingleton()
方法。与之对应的是,我们开发者更常用的 getBean()
方法,从这个角度来看,如何实现两者之间的协调工作就显得尤为重要。
通过对图示的分析可以看出,类适配器模式在这里发挥了关键作用。它使得标准的 ApplicationContext 与专门用于存储单例bean的 DefaultSingletonBeanRegistry 能够无缝接合,相互配合完成任务。这个中间适配器的角色主要由 DefaultListableBeanFactory 类承担,能够有效地连接两者。
在Spring的源代码中,设计模式的运用被非常巧妙地体现出来,这正是代码健壮性的一种体现。在不同层面上,它们通过不同的策略和机制,确保系统运转的高效性和稳定性。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月30日 12时16分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
无法初始化Winsock2.2处理
2019-03-12
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
2019-03-12
重置UAG Application admin密码
2019-03-12
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
Form窗体属性
2019-03-12
vue 错误收集
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13
Rabbitmq的内存磁盘监控
2019-03-13
访问servlet时弹出文件下载框解决方法
2019-03-13