保姆 一个简单的依赖注入容器(一个简单的依赖注入容器) 初衷 实习时导师要求我研究一下依赖注入容器并试着自己手写一个,我一听,好家伙,又是加班的一天啊。 当时用的是C#,就翻了翻IServiceCollection的二进制文件,梳理了一下流程,发现其实核心逻辑并不复杂,就是通过反射将你需要的对象构造出来,如果构造期间需要其他对象,就递归归进行,先构造依赖项。如果对象的生命周期是singleton,就用一个地图存起来后续直接获取。 一番研究后,还真让我写出来了,虽然代码很少,逻辑也很粗糙,但是总归实现了简单的IOC和DI功能,还有就是实现了容器的作用域,在不同作用域中可以拿到相同或者不同的实例,导师看了也也觉得不错。 实习结束回到学校,就想着用我比较熟悉的Java语言编程一遍,刚好也缺一个毕业设计,于是就有了保姆。 需求 控制反转(多种注册类型) 注册一个类 注册一个对象 注册一个提供商 依