Spring 中 DispatcherServlet 和 ContextLoaderListener 的区别
ContextLoaderListener 为 Web 应用程序创建一个根 Web 应用程序上下文,并将其放入 ServletContext 中。无论控制器层使用何种技术(Struts 或 Spring MVC),都可以使用此上下文加载和卸载 Spring 管理的 Bean。
DispatcherServlet 创建自己的 WebApplicationContext,并且此上下文管理处理程序/控制器/视图解析器。
序号 | 关键 | DispatcherServlet | ContextLoaderListener |
---|---|---|---|
1 | 基础 | DispatcherServlet 的任务是将请求发送到特定的 Spring MVC 控制器 | ContextLoaderListener 读取 Spring 配置文件(web.xml 中 contextConfigLocation 属性指定的值),解析它并加载该配置文件中定义的单例 Bean。因此,我们使用 ContextLoaderListener 初始化 Web 应用程序,以便预先读取/解析/验证配置文件,并且无论何时需要注入依赖项,都可以立即执行而无需任何延迟。 |
2 | 可选 | 它是可选的。Spring 应用程序无法在没有 DispatcherServlet 的情况下运行。 | 它是必须的。Spring 应用程序可以在没有 ContextLoaderListener 的情况下运行。 |
3 | 容器 | DispatcherServlet 创建自己的 WebApplicationContext。此上下文管理处理程序/控制器/视图解析器。 | 应用程序上下文是由 web.xml 中定义的 ContextLoaderListener 初始化的容器。 |
4 | Bean | 诸如控制器之类的 Web 特定 Bean 包含在 DispatcherServlet 的 Web 应用程序上下文中。 | 诸如服务和 DAO 之类的通用 Bean 会进入根 Web 应用程序上下文。 |
广告