我正在学习我的项目中使用的 Spring Framework 。 我在web.xml 文件中找到了 ContextLoaderListener 条目。但无法弄清楚它究竟如何帮助开发人员? __
在 ContextLoaderListener 的官方文档中,它说要启动 WebApplicationContext 。关于 WebApplicationContext JavaDocs 说:
为 Web 应用程序提供配置的接口。
但是我无法理解我使用 ContextLoaderListener 实现了什么,它在内部初始化了 WebApplicationContext ?
根据我的理解 , ContextLoaderListener 读取 Spring 配置文件(在 web.xml 中针对 contextConfigLocation 给出值),对其进行解析并加载该配置文件中定义的 单例 bean 。 同样,当我们要加载 原型 bean 时,我们将使用相同的 web 应用程序上下文来加载它。 因此,我们使用ContextLoaderListener 初始化 web 应用程序,以便我们提前读取/解析/验证配置文件,并且每当我们想要注入依赖项时,我们都可以立即进行,不会有任何延迟。这种理解正确吗?
你的理解是正确的。这ApplicationContext是你的 Spring bean 所在的地方。的目的有ContextLoaderListener两个:
ApplicationContext
ContextLoaderListener
将 theApplicationContext的生命周期与ServletContextand的生命周期联系起来
ServletContext
自动创建ApplicationContext,因此您不必编写显式代码来创建它 - 这是一个方便的功能。
另一个方便的事情ContextLoaderListener是它创建一个WebApplicationContext并提供对ServletContextvia ServletContextAwarebean 和getServletContext方法的访问。
WebApplicationContext
ServletContextAware
getServletContext