对在Spring MVC中使用ContextLoaderListener感到困惑

时间:2010-11-16 19:26:05

标签: java spring spring-mvc

我正在阅读一本关于Spring和Spring MVC的书,我正在尝试示例应用程序。问题是它是本书的预发行版本,完整代码尚无法下载。

我希望通过网络应用程序访问我的服务层中的bean。我必须在两个xml文件中声明它们吗? (一个用于服务层,一个用于Web应用程序?)本书中给出了此代码以添加到web.xml文件中,但我不确定这解决了什么:

<listener>
   <listener-class>
      org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
       <param-value>
          /WEB-INF/spitter-security.xml
          classpath:service-context.xml
          classpath:persistence-context.xml
          classpath:dataSource-context.xml
       </param-value>
</context-param>

但它没有说明service-context.xml等文件的位置,或者文件夹结构是什么。他们如何通过“classpath:”访问类路径?

我可以将这个xml文件放在一个位置,以便主应用程序和Web应用程序访问吗?或者,当我将bean部署到Tomcat时,是否需要两次声明我的bean?

任何帮助都会受到赞赏,因为我对此非常困惑。感谢

2 个答案:

答案 0 :(得分:2)

上面指定的xml文件位于类路径的根目录中。即WEB-INF/classesSee here了解更多详情

答案 1 :(得分:2)

根应用程序上下文(由ContextLoaderListener创建)是Web应用程序上下文的(由DispatcherServlet创建),因此在根上下文中声明的所有bean都可访问在webapp上下文中,因此您不需要复制它们的声明。

classpath:为前缀的资源位于类路径中,正如Bozho所解释的那样。