基于注解实现的 简易IOC
2019-01-13 本文已影响0人
大黑跟小白的日常
首先申明,这不是spring的IOC原理,跟Spring IOC比起来,这个是婴儿。
大体步骤介绍
1、读取默认配置文件内容;
2、获取配置项:扫描包路径
3、根据指定包路径,读取包下所有Class对象,存入List;
4、遍历Class集合,如果带有注解(约定好的需要实例化的注解),则进行实例化。将 Class——Bean 一 一存入Map;
5、遍历Map键值对,获取Class信息中的Field,遍历field,判断是否isAnnotationPresent(注解类.class);
6、获取带有注解的field的类型(可能是接口类),获取这个类型的子类(选指定实现类,如果未指定,选第一个);
7、根据beanField类型Class,获取Map 中 instance;
8、依赖注入,beanField.set(被注入bean, 注入的bean);












全篇是 基于 黄勇 老师的《从零开始写Web框架》源码 IOC篇 的个人 解读。码云可搜 smart-framework
MVC解读待续
AOP解读待续