tomcat运行springboot项目(Tomcat是如何启动Spring项目的)
tomcat运行springboot项目(Tomcat是如何启动Spring项目的)web.xml配置:tomcat加载web.xml中的servlet会调用servlet的init()方法,DispatcherServlet实现了servlet接口,在其父类HttpServletbean中也实现了init()方法,init()方法中就实现了SpringMVC的整个启动流程。下面看下源码:在initWebApplicationContext方法中会通过ServletContext获取上面配置的contextConfigLocation参数:然后会调用SpringIOC容器refresh()方法初始化容器:剩下的就是Spring容器初始化的流程了,和带main方法的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的子容器,MVC容器中的bean能注入SpringIOC中的bean,反之则不能。