4

我有一个 Maven 项目,其中包含“核心”和“网络”部分。我正在尝试将其转换为多个模块。

我已经将“web”包放入新项目中。我已将核心项目添加为依赖项,并且可以在 Eclipse 中引用它的类。WEB-INF\lib当我构建它时,“核心”项目正确显示在“网络”项目中。

当“核心”项目中的类@Autowired位于“网络”项目中时,问题就出现了。

在这种特殊情况下,我将一个服务类从“核心”自动装配到“网络”项目中的一个网络服务类中。如果我将核心服务所在的包添加到我context:component-scan的“Web”应用程序配置中,它会找到该服务,但随后该服务引用了一个存储库,该存储库引用了一个实体,该实体正在寻找我的实体管理器工厂我已经在我的“核心”项目中的应用程序上下文中进行了配置。

所以看起来context:component-scan“核心”项目中的可能没有发生?或者,“网络”项目可能无法使用所选择的课程?

我对多模块项目完全陌生,所以如果有人能让我从正确的方向开始解决这个问题,我将不胜感激。

如果重要的话,我在 Eclipse 中使用 m2e 和 Run Jetty Run 插件;但是,当我mvn jetty:run从命令行执行时,我似乎遇到了同样的问题。

4

1 回答 1

5

您将需要从您的 Web 模块应用程序上下文中加载核心模块应用程序上下文。否则它将不知道核心应用程序上下文中定义的 bean。查看无法加载来自其他 maven 模块的应用程序上下文和Spring 从另一个项目导入应用程序上下文的答案以获得正确的解决方案。
你也可以看看这篇文章,它很好地描述了如何使用 Maven 创建一个多模块 Spring 项目。

于 2013-04-05T21:34:51.117 回答