本文将使用服务器作为起点,通过源代码,Web容器中的控制器在Handlermapping中注册。小路。
让我们谈谈本文的一般思维和流程图:
从dispatchservlet的继承系统中,查看servlet的初始化。
httpservletbean中的init方法源代码
可以从httpservletbean中的init方法中看到它。这里的核心是设置Servlet的一些Bean属性,并继续在子类Frameworkservlet中看到该方法以查看该方法。
然后遵循dispatchservlet的方法。此方法将初始化派遣服务的九种策略。在这里,我们只关心该方法
核心查看方法
查看什么是默认处理器
在这里,我们只关心此类别。此类是处理控制器上的请求图注释的类。
请注意,在稍后处理请求时,您将选择最合适的处理程序从Handlermappings选择来处理请求
httpservlet中的服务器方法源代码
在这里,您可以记录服务处理请求的呼叫链
从上面的继承图可以看出,请求mappingHandLermpapping实现了初始化接口,因此初始化时调用后propertiesset方法。
然后查看父型的丙型培罗替特方法
转换为requestMappingInfo的requestMapping
此方法将将requestMapping转换为requestMappingInfo,将类的请求图转换为requestMappingInfo,然后将两个requestMappingInfo合并到(url合并)中。
手工图注册
查看输入requestMappingHandLermpapping的方法,该方法在parent类AbsTracThandLermpapping中实现。这是设计模式中的模板方法。
这里是两种方法的核心,一种是获得处理器的方法,另一种是获得相应的拦截器链
从上面的方法可以看到AbsTracthandLermet图的Gethandlerinternal方法,最后,在RequestMappingHandLermagping中详细说明了手工图,从映射Regregistry属性中取出的Mappingotistry。
ApptracthandLermapping的GethandLereXecutionChain方法已获得了拦截器链和响应请求的相应方法。Next是呼叫方法。这是播放处理程序的轮流,如何获取获取requestMappingHandlerAdapter的方法
返回到dispatchservlet dodispatch方法
请求mappingHandlerAdapter类的句柄内部方法在这里,整个呼叫的过程在此处。在它们之后,在章节和其他章节和其他章节和其他章节之后,注册,获取和处理请求反思呼叫。