• 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中寻找相对应的方法进行执行

               

  • 相关阅读:
    CV2图像操作
    Sobel边缘检测
    matlat之KDTreeSearcher()函数
    linux shell 将多行文件转换为一行
    (转)Shell脚本编程--Uniq命令
    (转)iptables简介
    (转)linux passwd批量修改用户密码
    (转)linux sort 命令详解
    (转)Linux命令之md5sum
    (转)shell实例浅谈之产生随机数七种方法
  • 原文地址:https://www.cnblogs.com/thiaoqueen/p/8496894.html
Copyright © 2020-2023  润新知