手撸Spring(一):创建简单容器

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

手撸Spring(一):创建简单容器


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


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

设计

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

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

手撸Spring(一):创建简单容器

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

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

所以我们进行如下设计:

手撸Spring(一):创建简单容器

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

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

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

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

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

实现

源码

手撸Spring(一):创建简单容器


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

测试

定义被管理类

手撸Spring(一):创建简单容器

测试用例

手撸Spring(一):创建简单容器

如果这看源码不方便,可以去Github看下:https://github.com/flyhero

如果感觉对你有帮助,还请转发、点赞、分享鼓励一下。


原文始发于微信公众号(码上实战):手撸Spring(一):创建简单容器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/107860.html

(0)
码上实战的头像码上实战

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!