写出我的第一个框架:迷你版Spring MVC,看了这篇文章我才真正理解了

DispatcherServlet

@WebServlet是什么?

其实,以前我们定义一个Servlet,需要在web.xml中去配置,不过在Servlet3.0后出现了基于注解的Servlet。

仔细观察,你会发现,这个DispatcherServlet是自启动,而且传入了一个参数。

要知道,在Spring MVC中,要想基于注解,需要在配置中指明扫描的包路径,就像这个样子:

为了方便,我这里就通过初始化参数直接将需要扫描的基包路径传入。

init初始化处理:

写出我的第一个框架:迷你版Spring MVC

init()

其实,在init中,我们主要是完成了什么呢?

第一,我们应该去扫描基包下的类,得到信息A

第二,对于@Controller/@Service/@Repository注解而言,我们需要拿到对应的名称,并初始化它们修饰的类,形成映射关系B

第三,我们还得扫描类中的字段,如果发现有@Qualifier的话,我们需要完成注入

第四,我们还需要扫描@RequestMapping,完成URL到某一个Controller的某一个方法上的映射关系C

其实,Spring MVC的处理流程,就是类似这样的!

扫描基包:

写出我的第一个框架:迷你版Spring MVC

扫描基包

注意,基包是X.Y.Z的形式,而URL是X/Y/Z的形式,需要转换。

实例化:

写出我的第一个框架:迷你版Spring MVC

实例化

从这里你可以看出,我们完成了被注解标注的类的实例化,以及和注解名称的映射。

依赖注入:

写出我的第一个框架:迷你版Spring MVC

依赖注入

以前,我们总是说Spring IOC,上面不就是在做这个事情么?

URL映射处理:

写出我的第一个框架:迷你版Spring MVC

URL映射处理

URL,我们需要提取出来,映射到Controller的Method上。

doGet/doPost:

写出我的第一个框架:迷你版Spring MVC

doGet/doPost

在doPost方法中,非常简单,我们只需要提取出URL,通过URL映射到Method上,然后通过反射的方式进行调用即可。

Make it run!

============

Controller层:

写出我的第一个框架:迷你版Spring MVC

UserController

Service层:

写出我的第一个框架:迷你版Spring MVC

UserService

写出我的第一个框架:迷你版Spring MVC

UserServiceImpl

Dao层:

写出我的第一个框架:迷你版Spring MVC

UserDao

写出我的第一个框架:迷你版Spring MVC

UserDaoImpl

运行结果:

写出我的第一个框架:迷你版Spring MVC

result

OK,到这里,一个迷你版的Spring MVC就开发完成了,以前,都是用Spring MVC,从没有想过可以自己开发一个出来,这是我的第一次,我的能量超乎我的想象,哈哈~

在此我向大家推荐一个架构资料,马士兵JVM精讲视频,威信,an_sheng975里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

写出我的第一个框架:迷你版Spring MVC,看了这篇文章我才真正理解了_第1张图片

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**…

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**…

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

image

你可能感兴趣的:(程序员,spring,mvc,java,后端)