迭代(一)搭建框架基础体系
2017-06-26 20:46
246 查看
“写一个框架”的一系列文章是一个mvc框架的开发文档。这个项目实现一个mvc框架,纯属练手项目。文档也只是辅助和记录开发,因此没有十分严谨和详尽。项目地址:
cris`s framwork.迭代一
需求分析
这个框架要实现什么功能?一个框架能有什么功能?在这个迭代的开始,我们不妨把目标定得低些,框架的意义就是让开发更简单,因此我们这款框架的目标可以初步定义为,用下面简单的代码来开发。
@Controller public class CustomerController { @AutoInject private CustomerService customerService; /** * 进入 客户列表 界面 */ @Action("get:/customer") public View index(Param param) { List<Customer> customerList = customerService.getCustomerList(); return new View("customer.jsp").addModel("customerList", customerList); } /** * 处理 创建客户 请求 */ @Action("post:/customer_create") public Data createSubmit(Param param) { Map<String, Object> fieldMap = param.getFieldMap(); boolean result = customerService.createCustomer(fieldMap); return new Data(result); } }
要实现这样的代码,我们的框架需要这样的功能:
(1)定义自己的注解
(2)实现依赖注入
(3)定义View和Data类
实现思路
要实现这些功能,思路是这样的:我们知道注解是很好用的,我们要实现注解的功能,就要扫描所有的类。关于注解,我写过一篇博文:注解的定义和应用
我的思路是这样的,将类和他的实例放在一个map里面,有需要则可以获取。也就是这个map存放了类和他的实例的映射。
这样一来map里面就有了类和实例的映射,因此可以扫描特定注解的类然后为这个类的有@AutoInject的字段实现注入功能。
我们先定义一下注解:
@Service
@Controller
@Action
@AutoInject
详细代码见项目地址。
然后实现上面的活动图,具体的类图如下所示:
IOC
也叫依赖注入(这里就不区别IOC和DI了)。我们之前定义的@AutoInject注解,需要框架帮忙实例化,而不是开发者来做。一个简单的IOC好像只要十几行代码:Map<Class<?>,Object> beanMaps = BeanHelper.getBeanMap(); for (Map.Entry<Class<?>,Object> beanEntry:beanMaps.entrySet()){ Field []fields = beanEntry.getKey().getDeclaredFields(); if (!ArrayUtils.isEmpty(fields)){ for(Field field:fields){ //判断当前区域是否带有@AutoInject注解 if(field.isAnnotationPresent(AutoInject.class)){ Object beanInstance = beanMaps.get(field.getType()); if (beanInstance!=null) //注入 ReflectionUtil.setField(beanEntry.getKey(),field,beanInstance); } } } }
迭代一总结
在迭代一中,我们实现了框架的基础架构。但是这些架构还不完善,这个框架还不能用。争取在迭代二中,让框架能用。迭代二计划
迭代二需求:用框架开发一个简单的程序
实现简单的AOP模式
相关文章推荐
- 快速开发框架第二弹:让ORM为快速开发插上翅膀(2)改进和基础框架搭建
- Netty基础介绍与框架搭建
- 我的(BEGIN)比京开始之路——搭建自己的RPC4J的体系框架
- 高可复用软件体系结构的基础框架元素
- 集合体系框架基础总结
- 基础框架功能需求之-可快速搭建业务办公系统原形
- 微信公众平台开发教程(三) 基础框架搭建
- 微信公众账号开发教程(二) 基础框架搭建——转自http://www.cnblogs.com/yank/p/3392394.html
- (转)微信公众账号开发教程(二) 基础框架搭建
- Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程
- ArchieOpenGL基础教程第二课:搭建OpenGL框架② 添加全屏控制
- spring基础开发框架搭建简记
- Netty基础介绍与框架搭建
- 基础加强____【集合框架体系个人总结】
- 2. 通用基础技术框架搭建
- 【Ruby+Watir测试框架系列讲座 1】基础环境搭建
- Netty基础介绍与框架搭建
- AS3项目基础框架搭建分享robotlegs2 + starling1.3 + feathers1.1
- 最基础的通过myeclipse搭建框架开发java web工程的步骤详解
- SS2H框架搭建,基础上篇