如何手写一个简易版SpringMVC
首先,我们需要理解IOC到底是什么原理,通俗易懂的来讲,当我们需要使用一个对象的时候,需要手动去new一个对象,我们将对象放到一个Map里去,通过反射创建对象,将对象保存到IOC容器(Map)里。
Tomcat启动时,首先加载war包,然后去创建容器,扫描war包下面带有@Controller,@Service注解的类,然后将扫描到的类通过反射实例化,存入到Map容器中,将存在依赖的bean进行注入,最后通过http请求路径与建立映射关系。
常用注解有@Controller、@Autuwired、@Service、@RequsetMapping、@RequestParam等。
➣
建立一个DispatcherServlet类;
➣
扫描包:拿到文件路径,将文件变为.class类,存入一个List中;
➣
实例化bean:将拿到的.class类判断存不存在MVC的注解,将存在的类通过反射添加到Map中;
➣
自动装配:遍历bean,首先判断该类是否为控制类,如果为控制类,则拿到该类的的所有属性进行遍历,使用setAccessible(true)打开private私有权限;
➣
请求Url:遍历bean,判断该类是不是控制类,只有控制类才能请求路径,在判断哪些方法带有requestMapping,拿到里面的Value值并返回。
这样,一个简单的springMVC模式就实现啦!
有兴趣的小伙伴可以试一试。
标签: