tomcat中spring容器和springmvc容器的创建时机
2022-02-14 本文已影响0人
M_lear
tomcat可以理解为两部分:
- Connector(默认基于NIO网络模型)
- Container(Servlet容器)
tomcat为每个web应用创建一个ServletContext,spring实现了ServletContextListener并配置在web.xml,tomcat创建ServletContext后会调用上下文监听器的contextInitialized方法,spring就是在这里创建spring容器的(管理applicationContext.xml配置的bean),并把spring容器放到ServletContext中(ServletContext持有一个哈希表,HttpSession也是,ServletRequest也是)。
spring mvc可以理解为两部分:
- DispatcherServlet(前端控制器,实现了HttpServlet)
- spring mvc容器
tomcat会根据web.xml的配置和请求来延迟加载所有的servlet,加载spring mvc的DispatcherServlet时,会调用它的init方法,spring mvc在这个init方法中创建spring mvc容器(管理spring-mvc.xml里配置的bean),并从ServletContext拿到spring容器作为自己的父容器。
所以Controller bean可以装配Service bean和Dao bean,反之不行。