Spring:我在使用注释时为什么需要applicationContext.xml?

时间:2014-05-03 20:49:11

标签: java xml spring spring-mvc annotations

我是春季新手

我试图使用货物在tomcat上部署我的war文件,并抱怨在目录中找不到applicationContext.xml

我进一步查找它应该去的地方并添加了一个空白的xml文件applicationContext.xml以查看是否有效但是它抱怨了某些内容

[INFO] [talledLocalContainer] SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
[INFO] [talledLocalContainer] org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.

我不确定为什么我需要applicationContext.xml如果我真的需要它,我应该把它放在那里?

我尽可能多地使用@annotations,我的单元测试也正确传递,意思是,我看到我的豆子正确连线

老年人,请帮忙

谢谢

更新

src/main/webapp/WEB-INF/web.xml

<xml>
</xml>

src/main/resources/applicationContext.xml

<beans></beans>

2 个答案:

答案 0 :(得分:4)

你必须告诉&#34;您的应用程序在哪里查找描述您的应用程序上下文的文件,如下所示:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/applicationContext.xml</param-value>
</context-param>

您可能需要调整<param-value>下的路径,但基本上就是这样。

我还建议minimun applicationContext.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="your.package.here"/>

    <tx:annotation-driven />
</beans>

如果您不需要Spring事务管理,请随意删除最后一行和相关的模式引用。

另外我还想提一下,技术上 是摆脱applicationContext.xml 完全的一种方式,但我真的怀疑它是否值得。你可能会发现this article很有用。

答案 1 :(得分:0)

查看参考文档的this part,尤其是这句话:

  

侦听器检查contextConfigLocation参数。如果参数不存在,则   listener使用/WEB-INF/applicationContext.xml作为默认值。

这就是它正在寻找applicationContext.xml文件以及原因。