渐进式实现Spring日志
渐进式实现Spring日志
Shio渐进式实现Spring日志
1 开始实现一个简单的Spring Bean容器
1.1 设计思路
使用Map数据结构来存储所有的Bean对象。
2. 基于模板模式实现对象定义、注册和获取
2.1 设计思路
使用模板模式,统一使用核心方法的调用逻辑和标准定义,进而可以很好地实现后续步骤而不用关心某一方法的调用逻辑。按照统一方式执行,类的继承者只需要关心具体方法如何实现即可。
基于模板方法模式实现对象定义, 注册, 获取
SingletonBeanRegistry |
3 基于策略模式实现含构造函数的类实例化
3.1 设计思路
不能简单的直接使用newInstance
来进行类型实例化。要处理带参数的构造函数的情况。 创建类实例有多种技术手段,例如JDK
本身的能力和cglib
。可以通过策略模式来进行组织
InstantiationStrategy |
4 注入属性和依赖对象
PropertyValue |
5 将资源文件中定义的对象注册到容器中
5.1 设计思路
Resource和ResourceLoader实现对资源的加载。BeanDefinitionReader实现的是对资源的解析,将文件中定义的bean注入到容器中
6 实现ApplicationContext
6.1 设计思路
将资源管理和Bean管理的功能进行整合,全部整合到ApplicationContext中。通过context的封装,可以提升整个系统的易用性。
ListableBeanFactory
是beanFactory
接口的扩展接口,它可以枚举所有的bean实例,而不是客户端通过名称一个一个的查询得出所有的实例。要预加载所有的bean定义的beanfactory
可以实现这个接口来。该 接口定义了访问容器中Bean基本信息的若干方法,如查看Bean的个数、获取某一类型Bean的配置名、查看容器中是否包括某一Bean等方法
评论
匿名评论隐私政策