Spring(配置)
为啥提供配置
- 配置管理bean更加灵活,不需要修改代码。
- 选择什么样的配置(xml – 配置复杂 或者 注解 – 带有入侵性) 所以都需要支持。
- 配置是属于那一阶段的,什么需要在配置体现。
Spring配置的流程
思路
首先我们先看Bean的初始化流程(通过配置的方式)
- 我们的配置目的是创建bean的定义对象
我们先定义一些接口创建bean的接口规范和bean隔离开
- 首先我们定义是的一个容器(ApplicationContext)接口
目的是为了读取配置信息生成bean定义保存,那他本身就结合了bean工厂和bean定义2个不封- 所以会实现一个BeanFactory接口
- 因为bean定义有多种实现方式(注解和xml)所以引申出来了XmlApplicationContext和AnnotationApplicationContext
- 然后在提取出来一个抽象的AbstractApplicationContext
总图:
- 不同配置的加载不一样的
xml加载的方式采用流式方式读取配置文件
注解加载的方式采用反射去扫描包的方式去解析的
所以解析的过程是不一样的:
针对于XML :会有多种数据来源
- 我们发现XML和注解解析的方式都是很复杂,直接放到Conext里面是不太合理的,虽然我们区分了Context,我们每种Context的数据来源也是不一样的,所以我们需要在进行抽象一层
分析一下:我们抽象了一层xmlDefinitionReader会对应有多个Resource的不同实现,注解也是同理
也样我们也就进行了更深入的抽象,现在只需要在此架构上写代码了
总结:我们在考虑一件比较复杂的功能的时候: - 必须做的事情是整个的流程梳理和分析:
- 将流程的步骤进行拆解细分:按照用户,数据流想的角度,系统交互的角度
- 对这些拆分进行抽象,定义一套接口的标准,当前肯定基于现有的标准和未来考虑的扩展定义的
- 一定完成之后在反复的推敲,你的接口的标准是否和设计模式相违背或者可以用设计模式修改
- 然后输出类图,流程图,时序图等
- 最后开始动手