首页 > 编程语言 > 详细

SpringMVC原理讲解

时间:2021-08-11 15:42:30      阅读:19      评论:0      收藏:0      [点我收藏+]

1、利用Servlet(tomcat)容器的spi发现思想进行方法调用,services包下会有一个以类名命名的文件

技术分享图片

 

 

 2、内部只定义需要访问的类

技术分享图片

 

 

 3、这个类的特点是实现ServletContainerInitializer 接口  并且使用  @HandlesTypes 注解

技术分享图片

 

 

 4、注解会收集WebApplicationInitializer类型的实例 并封装到set容器中,实现这个类主要是会被tomcat掉用到onstartup方法,并且

  入参就是收集的set集合。

技术分享图片

 

 

 5、具体内容调用

技术分享图片

 

 

 6、可以通过集成 AbstractAnnotationConfigDispatcherServletInitializer 类来手动创建一个@HandlesTypes注解类型的类,然后重新里面的方法,可以达到,灵活

  装配,其实就是钩子方法。当调用initialize.onStartup()  的时候,其实会调用到 AbstractAnnotationConfigDispatcherServletInitializer   类的父类

  AbstractDispatcherServletInitializer  这个类中

技术分享图片

 

 

 7、super方法,实现spring容器的创建

WebApplicationContext rootAppContext = createRootApplicationContext();
创建后加入监听,最终将监听加入tomcat容器
ContextLoaderListener listener = new ContextLoaderListener(rootAppContext);
listener.setContextInitializers(getRootApplicationContextInitializers());
servletContext.addListener(listener);

8、上一步只是创建上下文,并没有初始化,初始化操作是在 

ContextLoaderListener 类中,也就是监听中,被tomcat调用的

技术分享图片

 

 9、Spring容器已经启动完成,剩下的就是servlet启动,具体来说就是 DispatcherServlet

技术分享图片

 

 10、进入后也只是创建了 上下文,并没有初始化,初始化是在  servlet的 init  方法中   init方法是DispatcherServlet的父类

        HttpservletBean中,最后调用  initServletBean();

11、初始化

技术分享图片

 

12、基础类,初始化

技术分享图片

 

 13、请求处理类、方法处理类、试图解析处理类

 技术分享图片

 

 14、剩下还有很多细节,下一步就是,一个请求过来进入  servlet 的service方法,然后根据初始化的内容,进行方法

  的反射调用。先介绍这么多吧,入门了,后面的都好说。

 

 

 

SpringMVC原理讲解

原文:https://www.cnblogs.com/zxg-blog/p/15127522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!