从零手写Spring(一):创建简单Bean容器

工作的前面三年,虽然一直在使用Spring,但对它却不甚了解,内心充满无数的疑问:为什么配置xml中bean就可以使用它?我的对象具体存在于哪里?为什么我的对象是单例模式?
在这里插入图片描述

每逢遇到面试问Spring的核心原理,都是死记硬背的标准答案。为了更清晰的了解它,我去看过几次Spring基本概念的介绍,但仍然是一头雾水,不知所云。因为这些介绍都是专业术语表达,具有简洁、抽象性,而我们在刚接触时是无法理解的,只有具象化的描述和实践才能真正的让我们去理解。

随着工作时间的增长,学习的知识更多,现在回过头去会看当时不了解的东西,发现其核心原理竟然是如此的简单明了。我将把我的理解过程整理出来以供大家参考。

设计

我们先不去管IOC,DI, AOP等概念,就先从最简单的理解:容器(也有叫Spring容器、bean容器或IOC容器)

容器就是我们生活中用于盛东西的物体,比如:盆,桶,罐等。在程序世界中对其抽象,但他的主要作用仍然是存储。
在这里插入图片描述

所以你知道了吧?Bean容器的作用是存储我们的对象并管理对象的整个生命周期。

但是我们第一步要完成的是容器存储/获取我们的对象,管理对象的整个生命周期就后文慢慢道来。

所以我们进行如下设计:
在这里插入图片描述

我们要做的就是做一个容器,提供注册(存储)和获取功能。

1、找一个数据结构来存储对象。

我们需要选择一种数据结构来存储对象,而且需要通过对象的名称来查询出相应的对象,此时我们发现HashMap是最为合适的,而且HashMap无论是读取还是存入效率都是不错的。

2、提供注册和获取两个方法。

定义两个方法用于将对象存入上面的Map中和从Map中读取出来。

实现

源码

在这里插入图片描述

对,你没看错,Spring容器的实现用这一个类就实现了,我相信这么简单的开始所有人都懂吧。

测试

定义被管理类

在这里插入图片描述

测试用例

在这里插入图片描述
如果这里看源码不方便,可以去Github看下:https://github.com/flyhero

公众号:码上实战

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值