Spring web 程序启动流程简单梳理
2021/7/16 17:06:32
本文主要是介绍Spring web 程序启动流程简单梳理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这里写自定义目录标题
- Spring 创建Web项目及大致运行流程导图
- 处理service
- SpringBoot 创建Web项目及大致运行流程导图
Spring 创建Web项目及大致运行流程导图
- Web 服务器启动(Tomcat)
- 读取 Web.xml文件
- 解析web.xml中的标签 标签解析顺序 context-param >> listener >> fileter >> servlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--sping 配置文件位置 非controller层需注入对象--> <!--根容器对象--> <!--context-param 不写默认找WEB-INF/applicationContext.xml --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext.xml</param-value> </context-param> <!--sping --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <!--字符编码--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--rest风格 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
- 第一次被请求 创建DispatcherServlet*
- 创建dispactherServlet 对象
可知dispactherServlet 属于servlet 体系 , 方法init service 必定会执行
org.springframework.web.servlet.HttpServletBean 实现了init方法
在DispatcherServlet 继承体系中只有GenericServlet实现了init 的方法 跳转到
GenericServlet 做了一个空实现,交给子类实现
在DispatcherServlet 继承体系中只有HttpServletBean实现了GenericServlet 的 init 方法 跳转到HttpServletBean 的init()方法
PropertyValues 为web.xml 中的
contextConfigLocation
classpath:spring/spring-mvc.xml
找到指定配置文件 获取其中对象信息
BeanWrapper 用于为对象封装属性
在DispatcherServlet 继承体系中只有FrameworkServlet实现了HttpServletBean的 initServletBean方法 跳转到FrameworkServlet的 initServletBean() 方法
this.initWebApplicationContext() 内部执行了 onRefresh()方法
initWebApplicationContext() 方法
onRefresh()方法最终被DispatcherServlet 重写 创建了九大内置对象
init 线 完
DispatcherServlet 被执行时构造方法执行
其中主要做了初始化根容器,创建web容器
读取spring-mvc.xml文件内bean
把读取的对象转换成BeanWrapper
创建九大内置对象
处理service
- 解析请求 - 通过请求路径得到那个处理器可以处理这个请求 - heandermaping - heanderadeter 去解析 映射器 执行方法 - 如果出现异常处理异常 - 返回视图对象
SpringBoot 创建Web项目及大致运行流程导图
这篇关于Spring web 程序启动流程简单梳理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用