【问题标题】:Splitting big app into smaller modules - maven将大应用程序拆分为更小的模块 - maven
【发布时间】:2017-10-27 10:16:09
【问题描述】:

我们正在将庞大的项目拆分为更小的模块。

例如:一个应用程序中的 A、B 模块,我们想让它们独立,独立编译。有很多相互引用。

拆分依赖项的最佳方法是什么? 我们正在寻找当前编写一个接口并将其公开为每个接口的服务。 AImpl(一些需要由 B 调用的类)然后 B 通过 class.forName 使用它,并将类型转换为 AImpl。在运行时,它可以工作。

它需要大量的返工。这是正确的方法吗?

谢谢。

【问题讨论】:

    标签: java maven architecture web-deployment


    【解决方案1】:

    我至少会考虑直叉。这允许您的个人项目独立发展。您可以清理它们不使用的位,如果您确实需要共享库,请在之后识别它们,并根据需要重构以使用它们。

    我过去发现,当我这样做时,我发现“依赖项”并不像我想象的那么普遍,而且我已经将它们硬塞到相同的形状中多年来。

    例如,在模块 A(我们称之为计费)中,我将有一个客户,其中包含信用条款、未结余额等。在模块 B(称之为支持)中,我将拥有相同的客户,但是它们将具有完全不同的属性,例如软件版本或支持历史记录。

    除了都被称为“用户”并且具有共同的 ID 值之外,它们彼此没有任何关系,并且并不真正属于同一类。模块 A 从模块 B 分叉后,用户对象变得更小、更集中。

    这与人们在微服务中的发现相同。他们认为需要分享的东西,实际上并不需要分享,事实上,他们从分解中受益。这不是万能的,因为有时确实存在真正共享的复杂对象,但它并不像您想象的那么普遍。通常只是两个不同的事物具有相同的“名称”,因此被放入同一个类/模块中。

    【讨论】:

    • 我假设 A 和 B 不相关,但它们需要调用彼此的函数。今天,他们直接打电话。分叉后,最好的方法是什么? B 将其实现公开为接口,A 使用 class.forName 并将其类型转换为实现接口并使用它。
    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 2017-07-09
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    相关资源
    最近更新 更多