我是春天新手。在浏览应用程序时,我发现它的web.xml包含以下内容 -
<context-param>
<param-value>
classpath:com/abc/def/ghijkl.xml
</param-value>
</context-param>
我试图理解当你构建这个应用程序的WAR时,ghijkl.xml文件是否也被编译了? 我一直在深入研究WAR,并没有找到任何参考那里的xml文件。 有人可以指导我这个吗?
答案 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