概要:
- 框架需求与目标
- 框架设计与编码实现
- 框架演示与功能实现
一、框架需求与目标
框架需求:
框架的需求包含功能性需求 和非功能性需求,功能性需求框架本身所提供的功能,而非功能性需求通常也指定体验性需求,即该框架对于开发者而言,是否易上手,是否需要较多的学习成本,以及在开发时需要过多的配置。
有个时候两者是互相矛盾冲突的,比如当我们想让框架支持更的功能时,那么它的结构设计将会更复杂,抽像的层次将会越多,带来的负面影响时对框架使用者的学习成本增加了。
到底该选择更多的功能,还是更好的体验?这就需要框架作者要作出准确的定位与范围。
定位是该框架要完成什么目标?范围是实现该目标需实现哪些功能?两者清晰之后 自然知道哪些是必须做的,哪些是可以做的。而体验则是在保证必须功能的情况越高越好,甚至可以为了提供体验可以牺牲部分功能的完整性。
功能性需求用例图:
- URL映射
- 基于注解自动匹配调用方法
- 参数自动解析
- Form表单参数自动转换成一般对像和复杂对像
- 请求调用
- 基于反射调用目标方法
- 视图支持
- 基于返回结果跳转至对应视图处理
- 支持的有jsp 视图,freemarke视图,Json视图
- 异常统一处理
- 出现异常统一处理,并跳转到异常页面
非功能性需求与目标:
- 接近于零的配置
- 更少的学习成本
- 尽可能使用用户之前习惯
- 概念性的东西要少一些
- 更轻的体量
- 支持开发模式:动态装载配置
二、框架设计与编码实现
框架环境依赖:
框架名称:tuling-mvc
jdk:1.6 以上
依赖包:spring、freemarker、java-servlet-api
框架流程分解:
实现组件:
- FreemarkeView
- freemarke视图
- HandlerServlet
- 请求参数封装,请求转发
- MvcBeanFactory
- Mvc bean 工厂 ,从spring ioc 中扫描类装载MVC Bean
- MvcBean
- MVC 业务执行
- MvcMapping
- MVC注解,用于注解MVC Bean,并配置url 路径
UML类图:
MvcBean 装载时序图:
1、httpServelt init
2、从ioc 容器中获取 mvcBeanFactory
3、构造Factory
4、遍历ioc beans
5、封装保存Mvc Beans
请求时序图:
1、get 请求
2、获取mvc bean
3、构建参数
4、调用控制器执行业务处理
5、处理返回结果:解析业页、异常
6、返回html
三、框架演示与功能实现
1.处理映射
urlàcontrol(@MvcMapping à method)
一:初始化操作:
-
-
-
- 基于Spring ApplicationContext遍历所有Bean Type
- 基于Class 查找含有@MvcMapping注解的方法
- 封装Mvc
-
-