写在前面
本文一起看下springMVC的初始化过程。当我们按照如下的步骤配置好springmvc的环境后,就可以启动tomcat来访问项目了:
在启动tomcat的过程中会对springmvc的环境进行初始化,入口自然是DispatcherServlet的init方法。在servlet规范中,加载servlet后,会调用其init方法,当加载DispatcherServlet时,最终会调用到springmvc的servletorg.springframework.web.servlet.HttpServletBean
的init方法,如下:
org.springframework.web.servlet.HttpServletBean#init
public final void init() throws ServletException {
// 在web.xml中配置的contextConfigLocation就在这里,用户初始化springMVC的IOC容器
PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);
if (!pvs.isEmpty()) {
// ...
}
// 2023-04-02 12:32:49
initServletBean();
}
2023-04-02 12:32:49
处参考1:创建springMVC IOC容器
1:创建springMVC IOC容器
在该方法中会解析通过contextConfigLocation配置的springMVC配置文件,解析其中的bean并创建springMVC对应的IOC 容器web ApplicationContext,如下:
org.springframework.web.servlet.FrameworkServlet#initServletBean
@Override
protected final void initServletBean() throws ServletException {
...
try {
// 2023-04-02 12:57:59
this.webApplicationContext = initWebApplicationContext();
// 空实现,忽略
initFrameworkServlet();
}
...
}
2023-04-02 12:57:59
处加载结果相关的bean如下图: