迭代(一)搭建框架基础体系

“写一个框架”的一系列文章是一个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模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值