手写SpringMVC框架流程图
手写SpringMVC原理解析
1:自定义servlet实现HttpServlet
2:在init()方法中,获取Spring上下文信息。(即巧妙又**哈哈)
3:调用loadApiFromSpringBeans方法。通过IOC容器获取Bean的名称数组
4:还是通过applicationContext去根据名称获取类型。
5:循环方法,找到自定义的注解,进行参数解析,封装到调用类
6:构建Configration类(Freemarke中的类)
7:真正调用的时候走doGet和doPost方法,如果是put和delete方法根本就不支持(严重缺陷)
8:两个方法同时调用doHandler方法
9:通过req取得路径当做K找到注解中的映射路径
10:然后通过buildPrams去构建参数封装Object数组返回(将参数一一对应的封装通过反射去判断类型。然后如果是普通的类型)
11:通过convert方法将参数类型进行转换包装,然后并没有找到对byte类型和文件类型的数据包装(瞬间就可以翻车)
12:run方法通过反射调用执行目标方法。(姿势很帅)
13:通过processResult(result, resp);构建FreemarkeView(所谓的自定义试图引擎。其实就是Freemark哈哈。。。)。
14:总结手写MVC就是将Spring和Servlet各用一半进行拼装。(牛逼。。。。)