Tomcat是如何启动Spring项目的?

tomcat加载spring IOC流程

tomcat在启动ServletContext容器的时候会发布ServletContextEvent事件。Spring就通过实现ServletContextListener接口,监听该事件来监听ServletContext的生命周期。

web.xml配置spring IOC配置文件:

Spring中ContextLoaderListener实现了ServletContextListener接口:

对ServletContext启动监听:

在initWebApplicationContext方法中会通过ServletContext获取上面配置的contextConfigLocation参数:

然后会调用SpringIOC容器refresh()方法初始化容器:

剩下的就是Spring容器初始化的流程了,和带main方法的spring工程启动流程基本一样。

tomcat是如何启动SpringMVC的?

tomcat加载web.xml中的servlet会调用servlet的init()方法,DispatcherServlet实现了servlet接口,在其父类HttpServletBean中也实现了init()方法,init()方法中就实现了SpringMVC的整个启动流程。下面看下源码:

web.xml配置:

使用springMVC需要配置前端控制器DispatcherServlet,该类实现了servlet接口,所以就是个servlet。

在HttpServletBean中实现了init()方法:

方法中会获取contextConfigLocation配置,然后调用onRefresh()方法初始化容器。

在SpringMVC容器初始化的时候,如果有springIOC容器,会将SpringIOC容器设置威mvc的父容器:

SpringMVC和SpringIOC容器关系

SpringMVC容器是SpringIOC的子容器,MVC容器中的bean能注入SpringIOC中的bean,反之则不能。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章