之前tiny-spring已经实现了通过xml配置类的方式自动装配和依赖注入,现在要给tiny-spring框架加入自动扫描包下的类,再执行自动装配和依赖注入。
流程步骤可以分为:
- 类加载器获取包路径;
- 扫描并加载路径下的类集合;
- 将扫描到的类集合解析成BeanDefinition对象集合;
- 交给自动装配和依赖注入;
步骤1~2可以归结为获取指定包下面的类集合,然后再解析,最后自动装配和注入。
1. 获取指定包下面的类集合
- 首先我们需要一个类加载器
1 | /** |
- 然后需要有通过类名,获取类对象的方法
1 | /** |
- 将上面的结合起来,获取路径下面的Class集合
1 | /** |
2.解析和自动装配
通过继承AbstractApplicationContext类,实现抽象方法 loadBeanDefinitions 来加载类定义,并注入到内置的BeanFactory中,然后用 refrsh方法来自动装配和依赖注入。
1 | /** |
总结
这样基本实现了,类通过扫描包自动装配,代码已经上传到 https://github.com/lingo0/tiny-spring-ling.git 。
但是和Spring框架的结构还是不一样的,之后学习Spring的框架思想再继续优化。