弹簧和多模块设置

我的(基于maven)项目是由几个模块构建的.基本上有一个核心模块和几个模块,它们利用它来向外部提供各种服务.这些模块之间的“粘合剂”是“父”模块. “父”模块不应该包含任何代码.像这样的东西:

我想做的是使用Spring IoC将Core部件注入/自动装入服务部件.但我似乎找不到配置它的方法.或者至少我似乎无法找到避免服务部分中冗余IoC配置的方法.

更具体一点 – 使用the Spring documentation中的示例 – 假设这将是其中一个服务模块的配置 – 我如何将example.SimpleMovieCatalog配置部件移动到Core模块中,而不会失去将其注入其中一个的能力.兄弟“模块?

  <?xml version="1.0" encoding="UTF-8"?>
  <beans...>
    <context:annotation-config/>
    <bean class="example.SimpleMovieCatalog">
        <qualifier value="main"/>
    </bean>
    <bean class="example.SimpleMovieCatalog">
        <qualifier value="action"/>
    </bean>
    <bean id="movieRecommender" class="example.MovieRecommender"/>
  </beans>
最佳答案
我终于找到了一种似乎现在有效的方法:

>每个模块都将其弹簧配置保存在/META-INF/spring-\u0026lt;module\u0026gt;.xml中
>每个模块都必须将代码保存在自己的包中,否则上下文:组件扫描将无法正常工作
>所有依赖于其他模块的模块都必须通过应用程序上下文的“configLocations”加载外部模块配置 – 外部模块配置应该用sth引用.比如“classpath *:META-INF / spring-core.xml”

一些评论

>“classpath *:”是神奇的 – 因为它允许在嵌入的jar文件中包含其他资源
>这个解决方案对我来说仍有一个缺点,我的IDE(Intellij IDEA)无法解析交叉引用的bean.这是因为“hack”直接通过上下文加载spring-core.xml.不幸的是到目前为止我还没有找到任何其他方法:(
>另一件让我感到非常痛苦的事情就是使用……喜欢< import resource =“classpath *:META-INF / spring-core.xml”/>我的IDE理解,但根本没有给出所需的结果(例如,中断上下文:组件扫描配置)

转载注明原文:弹簧和多模块设置 - 代码日志