【问题标题】:Structuring Spring application with decoupled modules使用解耦模块构建 Spring 应用程序
【发布时间】:2013-12-03 10:54:32
【问题描述】:

我正在开发一个使用 Primefaces 作为视图的 web 应用程序,我将其他项目中的 Spring bean 注入到 JSF Managed bean 中。

我有一个架构问题: 我为我使用的每个组件(业务逻辑、持久性和其他)创建了单独的项目(模块),并使用它们的接口创建了单独的项目。 我希望我的 webApp 仅依赖于业务逻辑的接口,并使用 Spring Dependency Injection 注入 BL 的实现。 我想递归地实现这一点:业务逻辑仅依赖于其他接口,并使用 spring 注入实现。

问题是 Maven pom 文件对实际实现没有依赖关系,当我部署应用程序(在 Web 逻辑服务器上)时,没有部署实现 jar,并且 Spring 找不到要连接的 bean。

有没有办法在不向实际实现添加依赖项的情况下实现解耦? 如果项目没有添加为依赖项,我可以从其他项目中包含 Spring 的 bean 配置文件吗?

我认为这种解耦完全错了吗?

我很欣赏你的想法。

【问题讨论】:

    标签: spring maven decoupling


    【解决方案1】:

    显然,您需要 maven pom 中的依赖项,否则不会包含任何内容。您可以添加具有运行时范围的依赖项,该范围将它们包含在您的最终战争中,但不包括在开发期间(范围编译)。

    为了加载模块的上下文,您可能会想出一个命名约定和/或文件的标准位置。有了它,您可以在您的 Web 应用程序 bean xml 中执行类似的操作

    <import resource="classpath*:/META-INF/spring/*-context.xml" />
    

    这将从类路径上的/META-INF/spring 目录中加载所有以-context.xml 结尾的文件(包括jar 文件)。

    【讨论】:

    • 非常感谢!我现在没有任何疑问,我可以开始工作了:)
    猜你喜欢
    • 2014-07-20
    • 2010-09-16
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多