基本上我有一个多模块应用程序:
数据 商业 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是否在正确的位置处理资源文件?
答案 0 :(得分:0)
似乎m2eclipse存在一些问题,并在类路径中加载多个应用程序上下文。对我来说唯一的解决方案是将所有spring配置放在主Web应用程序应用程序上下文中。此解决方案解决方案既可以在打包的EAR中运行,也可以作为在eclipse中运行的爆炸应用程序。
答案 1 :(得分:0)
您安装了m2e-wtp吗?你在哪台服务器上部署?你应该将通过WTP部署的爆炸战争的内容与战争档案的内容区分开来,看看是否遗漏了什么。