由于未加载applicationContext.xml,因此无法使用m2eclipse构建部署Spring多模块

时间:2012-10-08 16:55:22

标签: spring m2eclipse multi-module

基本上我有一个多模块应用程序:

数据 商业 web应用

在网络应用程序部分中有 web.xml 使用此配置加载不同的applicationContext.xml配置文件:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext.xml</param-value>
</context-param>

[...]

<!-- Handles Spring requests -->
<servlet>
    <servlet-name>empp-v2-web</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/spring/webmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我的另外两个模块各有一个META-INF / spring / applicationContext.xml。 在webmvc-config.xml中我只对带有@Controller注释的类进行组件扫描,同时在applicationContext中我扫描除控制器之外的基本包中的所有内容。

问题是,当我尝试在控制器中自动装配bean时,我总是得到NoSuchBeanDefinitionException。 这会将应用程序作为爆炸项目运行,并使用&#34;添加和删除&#34;在eclipse中配置的服务器上。如果我执行maven构建并在同一服务器上手动部署应用程序,则应用程序可以正常工作并且bean会自动装配。 m2eclipse需要一些特殊的配置吗? 对我来说,似乎在这种情况下不加载applicationContext.xml。 如何验证m2eclipse是否在正确的位置处理资源文件?

2 个答案:

答案 0 :(得分:0)

似乎m2eclipse存在一些问题,并在类路径中加载多个应用程序上下文。对我来说唯一的解决方案是将所有spring配置放在主Web应用程序应用程序上下文中。此解决方案解决方案既可以在打包的EAR中运行,也可以作为在eclipse中运行的爆炸应用程序。

答案 1 :(得分:0)

您安装了m2e-wtp吗?你在哪台服务器上部署?你应该将通过WTP部署的爆炸战争的内容与战争档案的内容区分开来,看看是否遗漏了什么。