有关Spring web.xml <context-param>和<listener>标签的一些信息(参考Hello World示例)

2022-09-03 09:43:07

我在春季MVC世界中是相当新的。今天,我正在学习STS生成的简单“Hello World”示例:文件--->弹簧模板项目--->弹簧MVC项目

在 Web 中.xml我有 DispatcherServlet 的声明和它处理的请求映射...到这里一切都还行

在网络上.xml我也有这部分代码:

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

阅读有关 ContextLoaderListener 的 Spring 文档,我读到这个类执行侦听器的引导以启动 Spring 的根 WebApplicationContext 但是...它到底是什么意思?

另一个疑问是关于我正在传递给我的上下文的上下文ConfigLocation参数...到底是什么?打开 /WEB-INF/spring/root-context.xml文件,它似乎不包含任何配置...它是我的模板项目创建过程自动创建的 void 配置文件吗?Spring项目中应该包含什么样的配置?

我认为这个Hello World项目中没有使用和标签,因为如果我删除这些标签,projext仍然运行良好....对吗?


答案 1

ContextLoaderListener是启动 Spring 容器的类。基本上,每个Spring应用程序都由几个bean和连接组成(哪些Bean相互依赖的声明性描述)。这个描述历来是用XML编写的(现在我们有注释,Java配置,CLASSPATH扫描等)。

没有Spring容器,你的bean只是Java类,Spring配置文件只是一个无用的XML文档。 读取该文件,找到您的类,实例化它们并连接。然后将所有豆子放入容器中。ContextLoaderListener

此外,在应用程序关闭时关闭上下文(如果需要清理所有 Bean,请关闭它们)。ContextLoaderListener


答案 2

推荐