【问题标题】:Best practice injecting service into another service [closed]将服务注入另一个服务的最佳实践[关闭]
【发布时间】:2020-11-22 04:34:43
【问题描述】:

我们假设我有两个实体(SubscriptionApplication),每个实体都有他的 Repository 层命名为(SubscriptionRepositoryApplicationRepository),每个都有两个 Service(ISubscriptionServiceIApplicationService)

在某些情况下,假设我们最终得到 a case where ApplicationService need to inject SubscriptionServicea case where SubscriptionService need to inject ApplicationService ( 反过来)当然它是一个循环依赖

我的问题是:

当我想将服务注入另一个时,我应该如何反思以免陷入此类问题。 (这意味着我如何决定是否需要将 ApplicationService 注入 SubscriptionService 或相反)?

【问题讨论】:

    标签: spring dependency-injection architecture


    【解决方案1】:

    您可以通过使两者都依赖于另一个抽象来反转两个服务的相互依赖关系。在您的情况下,由于两者都是域服务,您的实体或域服务发出的域事件可能是一个不错的选择。

    但如果不了解有关您的域的更多详细信息以及 ApplicationSubscription 的用途,很难判断您是否没有面临设计问题。

    如果您认为存在设计缺陷,我建议您问自己这些问题,当我不确定自己在领域模型。

    • 合并这两个相互依赖的组件是否更有意义?
    • 我的 component A 是否访问了 component B 的某些功能,而这些功能应该是 component A 的一部分?
    • 我的 component B 是否访问了 component A 的某些功能,而这些功能应该是 component B 的一部分?
    • A 或 B 的功能是否应该由另一个访问,而不是在第三个尚未发现的组件中?这可能是另一个界面、领域事件或类似的东西......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 2013-12-22
      相关资源
      最近更新 更多