问题
spring中相关的容器有哪些
答案
容器,顾名思义,就是用来存放东西的;java容器包括spring中的容器都是用来存放对象的,而这些对象的功能便提供了相关容器的特性。
-
Servlet容器:Servlet 容器是 Web 服务器的一部分,用于提供基于请求/响应发送模式的网络服务,解码基于 MIME 的请求,并且格式化基于 MIME 的响应。总之,Servlet容器是用来管理Servlet的,属于web容器的一部分。
-
web容器:web容器主要有nginx、Apache、IIS、Tomcat、Jetty、JBoss、webLogic等,而Tomcat、Jetty、JBoss、webLogic同时也包括servlet容器。倘若web容器中不包括Servlet容器,只能访问静态页面,不能访问jsp。web容器是管理servlet(通过servlet容器),以及监听器(Listener)和过滤器(Filter)的。
-
spring ioc容器:在web 容器启动时,会触发ContextLoaderListener监听器中的contextInitialized方法,在这个方法中,spring 会初始化上下文即 WebApplicationContext,它包含了所有业务逻辑和数据库逻辑的对象 。这个就是Spring 的Ioc 容器,这也是父容器。
-
spring mvc容器:在父容器初始化完毕后,便开始进行web.xml 中配置DispatcherServlet的初始化。此servlet 就是springmvc中的前端控制器,用以转发、匹配、处理每个servlet 请求。这个就是spring mvc容器,这就是子容器。
-
web容器、父容器、子容器的访问可见性是子容器能访问父容器,父容器能访问web容器,但是却不能反过来,这就是Controller层在子容器加载【后加载】,Service层在父容器加载【先加载】的原因。当然,web容器当中也能访问ioc容器、mvc容器中的bean,需要借助于WebApplicationContextUtils。