通过完成SpringMvc入门项目的搭建SpringMvc入门搭建,对于SpringMvc的工作过程也进行了一定的思考,使用SpringMvc时,我们可以将其分为两个阶段,分别是启动服务器初始化过程和单次请求过程。
层次图
一.启动服务器初始化过程
① 启动服务器后,执行了ServletContainerInitConfig类,来初始化一个web容器
② 执行createServletApplicationContext方法,创建一个WebApplicationContext对象
该方法用来加载SpringMvc的配置类,来初始化SpringMvc的容器
③ 加载SpringMvcConfig配置类
④ 执行@ComponentScan加载对应的bean
扫描指定包及其子包下所有类上的注解,如Controller类上的@Controller注解
⑤ 加载UserController,每个@RequestMapping的名称对应一个具体的方法
此时就建立了 /save 和 save方法的对应关系
⑥ 执行getServletMappings方法,设定SpringMVC拦截请求的路径规则
/代表所拦截请求的路径规则,只有被拦截后才能交给SpringMVC来处理请求
二.单次请求过程
① 发送请求
http://localhost/save
② web容器发现该请求满足SpringMVC拦截规则,将请求交给SpringMVC处理
③ 解析请求路径/save
④ 由/save匹配执行对应的方法save()
启动服务器初始化过程中的第五步已经将请求路径和方法建立了对应关系,通过/save就能找到对应的save方法
⑤ 执行save()
⑥ 检测到有@ResponseBody直接将save()方法的返回值作为响应体返回给请求方
为了便于企业级开发,使我们在开发中更加的方便可以用以下代码对ServletContainerInitConfig类进行替换
它对之前的方法进行了简化,但是表达的意思相同