zoukankan      html  css  js  c++  java
  • Spring MVC运行流程

    一、配置阶段

    ①web.xml

    ②DispatcherServlet    //Spring MVC总入口

    ③配置初始化参数   //classpath:application.xml,用于配置无数个bean

    ④servlet 请求路径配置,如/web/url,  /*.json等

    二、初始化阶段

    ① 调用 servlet 的init方法  //被web容器调用,如Tomcat,jetty

    (以下是servlet 的init方法做的事情)

    ②找到配置文件所在路径,即加载application.xml中的内容,并解析

    ③扫描相关联的class(根据用户配置的包名去扫描)

    ④IOC容器的初始化

    (IOC容器就是一个Map,类似(beanID,实例),即key是beanID,value是实例。默认情况下,以首字母小写的类名作为beanID。如果用户自定义了ID,那么优先使用用户定义的ID)

    ⑤依赖注入DI

    (如果声明的类中,有需要注入的属性,即定义了成员变量,且需要赋值,那么spring会给此成员变量自动赋值)

    ⑥初始化一个HandlerMapping(HandlerMapping也是个Map,  其作用是将URL和@Controller中的某个方法进行一对一的关联,保存到一个Map中)

    三、运行阶段

    ①service方法(分发 doGet/doPost方法,用户一旦在浏览器中输入一个URL,web容器就会自动调用该service方法)

    ②调用一个doDispatch方法(根据用户请求的URL去匹配已经初始化完毕的HandlerMapping中的Method)

    ③通过反射机制,动态调用上一步匹配到的Method,获取到返回值

    ④通过Response 输出

    总结:

    核心内容: 

                    ①加载配置文件

               ②扫描所有相关的类(一般是被托管的类,即有注解的类),将类名放到一个list (命名为classNames)中

                    ③遍历list  classNames,将所有相关Class的实例初始化,并且将其保存到IOC容器之中

          ④遍历ioc,进行自动化依赖注入

          ⑤初始化HandlerMapping,将URL与方法一一映射,存到map中(命名为handlerMapping)

               ⑥用户请求的时候做分发,去handlerMapping中寻找相对应的方法进行执行

               

  • 相关阅读:
    scheme资料
    lisp 资料
    linux input 文章
    qt 键盘驱动分析
    表达式模板 (C++学习)
    qt 键盘插件(mine)
    qt 私有实现导致plugin 加载 提示 undefined symbol
    Visual C++ 8.0对象布局的奥秘:虚函数、多继承、虚拟继承
    linux内核input子系统解析
    qt 键盘 插件
  • 原文地址:https://www.cnblogs.com/thiaoqueen/p/8496894.html
Copyright © 2011-2022 走看看