如何手写一个简易版SpringMVC

Posted 汇求职

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何手写一个简易版SpringMVC相关的知识,希望对你有一定的参考价值。

如何手写一个简易版SpringMVC

springMVC




首先,我们需要理解IOC到底是什么原理,通俗易懂的来讲,当我们需要使用一个对象的时候,需要手动去new一个对象,我们将对象放到一个Map里去,通过反射创建对象,将对象保存到IOC容器(Map)里。



如何手写一个简易版SpringMVC


01

SpringMVC在Tomcat上运行的流程

Tomcat启动时,首先加载war包,然后去创建容器,扫描war包下面带有@Controller,@Service注解的类,然后将扫描到的类通过反射实例化,存入到Map容器中,将存在依赖的bean进行注入,最后通过http请求路径与建立映射关系。

02

如何简单的去手写一个SpringMVC

SpringMVC的底层核心是Servlet。

常用注解有@Controller、@Autuwired、@Service、@RequsetMapping、@RequestParam等。

首先我们手写的方向大致分为如下步骤:
扫描有哪些包带有注解
如何去实例化bean
自动装配
请求Url


接下来就开始搬砖过程
先创建注解类;

如何手写一个简易版SpringMVC


建立一个DispatcherServlet类;

如何手写一个简易版SpringMVC


扫描包:拿到文件路径,将文件变为.class类,存入一个List中;

如何手写一个简易版SpringMVC


实例化bean:将拿到的.class类判断存不存在MVC的注解,将存在的类通过反射添加到Map中;

如何手写一个简易版SpringMVC


自动装配:遍历bean,首先判断该类是否为控制类,如果为控制类,则拿到该类的的所有属性进行遍历,使用setAccessible(true)打开private私有权限;

如何手写一个简易版SpringMVC


请求Url:遍历bean,判断该类是不是控制类,只有控制类才能请求路径,在判断哪些方法带有requestMapping,拿到里面的Value值并返回。


这样,一个简单的springMVC模式就实现啦! 有兴趣的小伙伴可以试一试。


以上是关于如何手写一个简易版SpringMVC的主要内容,如果未能解决你的问题,请参考以下文章

手写一个SpringBoot简易版框架

手写一个SpringBoot简易版框架

手写一个简易版Tomcat

手写一个简易版断路器(hystrix)

手写一个简易版Sentinel

手写一个简易的IOC