从零开始搭建轻量级JavaWeb框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33661044/article/details/79364130

smartframework

黄勇<<架构探险:从零开始写JavaWeb框架>>,轻量级javaweb框架smartframework源码,源码地址:https://github.com/letterZhao/smartframework.git

简介

一、实现IOC功能(加载配置文件,读取路径下的类、实例化类、IOC容器管理bean)

ConfigConstant类 提供基础配置文件路径
ConfigHelper类 读取配置文件
ClassUtil类 加载配置文件下的类
@Controller @Service 定义Controller和Service类
ClassHelper类 封装了ClassUtil类,提供各种获取Class的方法
ReflectionUtil类 提供实例化Class的方法
BeanHelper类 IOC容器,提供获取实例方法

二、实现AOP功能

最简单的做法是通过beanHelp类获取所有Controller或Service注解的类,然后遍历获取这些类的成员变量,看是否是AutoWired注解的类,如果是通过ReflectionUtil类的setFiled方法来实现DI注入

三、实现请求和Controller层的映射关系

Request类: 封装请求路径和请求方法
Handler类: 封装Controller和Method
ControllerHelper类: 根据ClassHepler类获取所有Controller注解的方法,通过反射获取所有带Action注解的方法,并获取请求路径和请求方法,将Request和Controller关系映射到一个Map中,根据Request可以随时获取Map中的Value;

四、初始化框架

HelpLoader类 初始化ClassHelper、BeanHelper、IOCHelper、ControllerHelper

五、请求转发器DispatcherServlet

首先从request中获取请求方法和请求路径,封装成一个request对象,通过ControllerHelper.getHandler(requestMethod,requestPath);方法获取Handler类,然后通过BeanHelp.getBean()方法获取实例对象,随后通过HttpRequest获取请求参数封装为Param类,通过ReflectionUtil.invokeMethod(controllerBean,actionMethod);方法返回结果,然后判断返回结果的类型,返回视图或者数据

猜你喜欢

转载自blog.csdn.net/qq_33661044/article/details/79364130