纯手写springMVC(基础版)

实现思路:
1.定义程序入口GdzDispatcherServlet
2.加载配置文件application.properties
3.扫描scanPackege包下所有的类
4.初始化包下的所有实例并保存到ConcurrentHashMap的IOC容器中
5.注入类的属性
6.将url和方法绑定,并保存到ConcurrentHashMap的HandlerMapping中

项目结构目录
纯手写springMVC(基础版)_第1张图片

程序的入口需要在web.xml中配置

纯手写springMVC(基础版)_第2张图片
核心入口类GdzDispatcherServlet继承了HttpServlet ,我们只需要重写它的init、doGet、doPost方法即可。在init方法中我们需要完成配置文件的加载,IOC容器的初始化和URL的映射绑定。因为init方从servlet创建到销毁只会调用一次,这样我们就可以保证我们初始化的IOC中的bean是单例的,这样可以减少因对象的频繁创建而带来的内存消耗和性能问题。

纯手写springMVC(基础版)_第3张图片

doPost方法,将url分发到对应的方法。
纯手写springMVC(基础版)_第4张图片
doLoadConfig方法加载配置文件
纯手写springMVC(基础版)_第5张图片

doScanner方法扫描包下的所有类
纯手写springMVC(基础版)_第6张图片
doInstance初始化bean
纯手写springMVC(基础版)_第7张图片
doAutowired注入实例
纯手写springMVC(基础版)_第8张图片
initHandlerMapping方法将url和相应的方法绑定

纯手写springMVC(基础版)_第9张图片
至此,SpringMVC基本功能已经具备。欢迎技术交流。

代码地址:https://github.com/dezhiguan/SpringMVC

你可能感兴趣的:(纯手写)