我有一个Maven项目,其中包含“核心”和“网络”部分。我正在尝试将其转换为多个模块。
我已经使用了“网络”包并将它们放入新项目中。我已经将核心项目添加为依赖项,我可以在Eclipse中引用它的类。当我构建它时,“核心”项目在“web”项目中正确显示在WEB-INF\lib
中。
当“核心”项目中的类在“web”项目中为@Autowired
时,问题就出现了。
在这种特殊情况下,我将服务类从“核心”自动装入“web”项目中的一个Web服务类。如果我将核心服务所在的包添加到我的“web”应用程序配置中的context:component-scan
,它会找到该服务,但随后该服务引用一个存储库,该存储库引用一个实体,该实体正在寻找一个实体经理工厂,我已经在我的“核心”项目中的应用程序上下文中进行了配置。
所以似乎也许“核心”项目中的context:component-scan
可能没有发生?或者可能是“网络”项目没有提供被选中的课程?
我对多模块项目完全陌生,所以如果有人能让我开始朝着正确的方向着手解决这个问题,我会非常感激。
如果重要的话,我在Eclipse中使用m2e和Run Jetty Run插件;但是,当我从命令行执行mvn jetty:run
时,我似乎遇到了同样的问题。
答案 0 :(得分:5)
您需要从Web模块应用程序上下文加载核心模块应用程序上下文。否则,它将不会知道核心应用程序上下文中定义的bean。 查看Application context from other maven module cannot be loaded和Spring import application context from another project的答案以获得正确的解决方案 您还可以看一下这个post很好地描述如何使用Maven创建一个多模块的Spring项目。