Spring 中 DispatcherServlet 和 ContextLoaderListener 的区别


ContextLoaderListener 为 Web 应用程序创建一个根 Web 应用程序上下文,并将其放入 ServletContext 中。无论控制器层使用何种技术(Struts 或 Spring MVC),都可以使用此上下文加载和卸载 Spring 管理的 Bean。

DispatcherServlet 创建自己的 WebApplicationContext,并且此上下文管理处理程序/控制器/视图解析器。

序号关键DispatcherServletContextLoaderListener
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 应用程序上下文。

更新于: 2020-09-09

2K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告