spring源码学习(一)

Spring作为一个IOC容器,今天我们学习它作为web解析的地方,学习下webmvc包的代码。
我们先看下web.xml

spring源码学习(一)_第1张图片

 

 

 

可以看到通过DispatcherServlet来实现页面的mapper处理。

DispatcherServlet->FrameworkServlet->HttpServletBean->HttpServlet

这是集成关系从HttpServletBean可以看出它是一个httpservlet ,

我们看下HttpServletBean的init方法

spring源码学习(一)_第2张图片

 

 

 

可以看到初始化方法在initServletBean中。我们继续看下FrameworkServlet中的initServletBeanspring源码学习(一)_第3张图片

 

 

 

 

spring源码学习(一)_第4张图片

 

 

我们看下DispatcherServlet的onRefresh

spring源码学习(一)_第5张图片

 

 

 

我们发现在这里进行了初始化,重点分析下initHandlerMappings方法

spring源码学习(一)_第6张图片

 

 spring源码学习(一)_第7张图片

 

 spring源码学习(一)_第8张图片

 

 

可以看到把所有的handlemapping都放到map中。

我们在看处理的地方

spring源码学习(一)_第9张图片

 

 

spring源码学习(一)_第10张图片

 

 

spring源码学习(一)_第11张图片

 

 

我们看下lookupHandlerMethod 这个方法

spring源码学习(一)_第12张图片

 

 

spring源码学习(一)_第13张图片

 

 

看到这里我也蒙圈了。这mappingRegistry玩意才是关键。

spring源码学习(一)_第14张图片

 

 

打开InitializingBean 发现这个接口的唯一方法是afterPropertiesSet。很显然spring又在构造方法埋点了。
spring源码学习(一)_第15张图片

 

 

可以看到根据url从handlerMap 得到处理的bean对应的method方法.

我们继续看下处理的地方

spring源码学习(一)_第16张图片

 

 spring源码学习(一)_第17张图片

 

 spring源码学习(一)_第18张图片

 

 

异步处理下。

转载于:https://www.cnblogs.com/manongyangjia/p/10943242.html

你可能感兴趣的:(spring源码学习(一))