美文网首页程序员
搭建第一个SpringMvc框架

搭建第一个SpringMvc框架

作者: 2894ab72509d | 来源:发表于2018-08-30 18:01 被阅读10次

此文很快能够理解SpringMvc的设计思想,代码精简了许多,保留了最核心的方法,仅供大家参考学习实现思路。

项目结构图如下图所示:

首先从第一个目录看起(annotation):

里面都是自定义注解,并且从命名可以看出与SpringMvc的注解保持一致,具有相同的功能。 

上面几个注解的意思我就不过多说明了,相信大家都明白,其他几个注解与这个写法很相似,不同就是被标注的地方不同,比如@Service只能被标注在类上面一样。

Service层,定义了两个方法,将接收到的参数拼接好再返回回去,并且实现类用了自定义的注解标注,最后将会注册。

前面的准备工作做好,最后激动人心的时刻来了,自定义Servlet,SpringMvc底层也是封装了Servlet,只不过我们封装的很简单,不过麻雀虽小五脏俱全,一系列的方法我们还是应有尽有。

一、自定义一个Servlet类,并且继承HttpServlet类,并且重写doGet,doPost,init方法。

差点忘了,贴上pom的图,只需要导入servlet的实现即可。

二、将刚刚定义好的Servlet定义到Web.xml中


三、在inte方法中进行一些初始化操作

编写第一个方法,扫描包下所有文件,并且加入到List中

编写注册Controller和Service的方法,将实例化出来的Controller和Service添加到Map中

编写自动注入方法,自动注入bean

至于为什么beans.get(key)可以直接获取到对象,在上面可以看到Service的实现类上,注解的value是实现类的小写,在doInstance方法中注入的时候,key就是取的注解的value,所以这里可以直接拿到

编写映射mapping的方法

最终将mapping存入map中,通过请求的url可以直接获取到请求的方法

因为从Request中取出的参数都是String,如果接口中有的参数不是String的话,就会出现类型转换错误,所以写了下面这个方法来转换类型

不知道返回值,就用T代替了,typeConversion是一个很简单的实现类,实现了转换的实现

整个初始化过程就如下所示:

调用如下:

调用如下:

整体思路就是这样了,也比较简单,大概总结一下

一、扫描所有文件

二、注册所有Controller和Service

三、自动注入bean

四、将mapping与方法一一对应并且注册到Map中

五、编写调用细节

目前我只实现了RequestParam,还有一个PathVariable没有实现,稍微有点麻烦,以后有时间实现了会将代码更新到github上。

项目地址

如果有哪里不对的地方,也麻烦指认出来,大家一起学习

相关文章

网友评论

本文标题:搭建第一个SpringMvc框架

本文链接:https://www.haomeiwen.com/subject/xpddwftx.html