前言
今日解读文章来自:
原文链接🔗
原文解读
控制反转容器不断有友友在创作,来看一下这一位怎么写的吧。
思路很清楚了,这里Map
提前标注下,key
是注解的自定义参数,value
是实例对象。
比如这里,key
是BigStar
,value
是new BigStar()
。并不是说这里是显式实例化出来的,而是后面通过反射实例化出来的。
这里也是写了两个运行时注解,类注解用来承载要序列化的对象和key
,字段注解用来提供实例化对象时每个字段的参数。
到这里只是拿到了运行方法的路径,之后要通过这个路径拿到全部类。
从根路径开始,对于文件来判断是否以.class
结尾,文件夹来说进入下一层递归。
这里拿掉class
文件做类加载,加载后先创建实例化对象,加载后检查下是否存在上面定义的运行时类注解,存在则对属性按照字段注解赋值,最后放入容器。
这里如果没有注解可以不需要实例化对象,也就是蓝色的框框可以向后调整。
到这里,这个IOC容器就实现完成了。
后记
总结一哈,这里IOC容器实现了基本的注入和存取功能,但是对于复杂的场景如非字符串依赖,无法实现注入。对象依赖注入时需要还考虑循环依赖的情况。
专栏所有文章均取材自博客排行榜,并附加个人的解读。
感兴趣的老爷们点个👍,想看其他文章的解读可以评论区留言。