1.创建spring容器
😀 1.创建spring容器
本文介绍small_spring的第一节知识,简单的实现一个最基础的spring中的容器,包括定义、存储、获取这个容器中的bean对象,相比于真正的spring源码只是一个简化版本,后面的章节会慢慢的对这个容器进行扩充,文章中涉及到的代码在 仓库 中
思路
一般的spring容器需要经历两步才能将一个bean存储到IOC容器中,分别是定义、注册,其中定义一般是存放bean的类型,但是在本节中直接存放的是bean对象本身,后期将对这个功能做出修改。注册一般是将bean的名称与其类型的映射关系,但是本节中直接实例化一个bean,然后将这个bean存储到容器中,最后的获取就是按照bean的名称获取对应的bean对象
按照上面的分析,代码的主要逻辑就是将bean的实例化对象存储到一个容器中,之后通过bean的名称获取,实现这中功能的容器一般是Map,整个流程如下:
实现
- 定义:主要是定义一个BeanDefinition类,然后将bean的实例化对象存储进去,所以这里直接使用Object来存储这个对象
- 注册,主要是将BeanDefinition中的bean对象及其名称之间的映射关系保存起来,代码中直接使用HashMap来存储这种映射关系
- 获取,直接按照键,也就是bean的名称获取到对应的bean,这里并没有考虑bean不存在的问题,因为本节中只是最简单的手动实例化一个bean,然后将其存储到容器中
- 测试:针对定义的IOC容器进行测试:
|
|
可以看出测试的过程就是上面描述的三步,只不过相比于真正的spting,大大的简化了所有的步骤
总结
本节实现了一个最基础的不标准IOC容器,后面的章节会逐步对这个容器进行扩充