WAR(spring应用程序)中web.xml的classpath部分中文件的位置

时间:2015-12-05 07:28:01

标签: spring spring-mvc

我是春天新手。在浏览应用程序时,我发现它的web.xml包含以下内容 -

<context-param>
    <param-value>
        classpath:com/abc/def/ghijkl.xml            
    </param-value>
</context-param>

我试图理解当你构建这个应用程序的WAR时,ghijkl.xml文件是否也被编译了? 我一直在深入研究WAR,并没有找到任何参考那里的xml文件。 有人可以指导我这个吗?

1 个答案:

答案 0 :(得分:1)

可以从应用程序中的所有servlet读取的上下文参数,在Spring项目中使用如下。

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:context.xml</param-value>
    </context-param>

您声明所有servlet也可以访问context.xml中定义的这些bean。

  

我试图了解当你构建一个这样的WAR时   应用程序,ghijkl.xml文件也被编译了吗?

xml文件未编译,它们在应用程序启动时在运行时使用(部署到应用程序服务器并初始启动)

  

我一直在深入研究WAR并没有找到任何参考   那里的xml文件

如果你在启动你的应用程序时没有得到运行时异常,那么它应该是一些引用,如下面的stacktrace

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/abc/def/ghijkl.xml]; nested exception is java.io.FileNotFoundException: class path resource [com/abc/def/ghijkl.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
    at  org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: class path resource [sasa.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)
    ... 21 more