Spring 配置错误 WEB-INF/servlet-context.xml FileNotFoundException

Spring configuration error WEB-INF/servlet-context.xml FileNotFoundException

我有一个非常简单的 spring 测试应用程序。但是即使一切似乎都井井有条,我也会遇到异常。我可能会遗漏一些东西。请检查图片以查看项目结构和 web.xml 文件包含以及异常:-

efinitionStoreException:IOException 从 class 路径资源 [WEB-INF/servlet-context.xml] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException: class 路径资源 [WEB-INF/servlet-context.xml] 无法打开,因为它不存在 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)

servlet 环境中有两种资源:

  • servlet 资源 - Web 应用程序根目录下的文件(通过 ServletContext 加载)
  • 类路径资源 - Web 应用程序类路径上的资源(通过 ClassLoader 加载)

当 Spring 应该加载其配置时,它需要知道使用哪种机制。

  • classpath:foo/bar.xml - 将加载为类路径资源
    • 正在检查 WEB-INF/classesWEB-INF/lib/*.jar 的内容和其他共享 servlet 容器的类路径位置
    • 使用 Maven 及其项目结构时,src/main/resources 中的所有文件都将放在类路径中
  • foo/bar.xml - 将加载为 servlet 资源
    • 当使用 Maven 及其项目结构时,src/main/webapp 文件夹是应用程序的根目录

TL;DR 正如我在评论中所写,在引用 XML 文件时删除 classpath: 前缀或移动 XML 文件到 src/main/resources 并删除 WEB-INF 部分。