一个 service 里面依赖了很多 repository,大家是怎么处理的?并且这些都是业务逻辑需要且围绕当前主体进行使用的。比如 @Service @RequiredArgsConstructor public class PlanMaterialServiceImpl extends BaseServiceImp ..

想问问 service 太多依赖怎么办?

一个 service 里面依赖了很多 repository,大家是怎么处理的?并且这些都是业务逻辑需要且围绕当前主体进行使用的。比如

@Service
@RequiredArgsConstructor
public class PlanMaterialServiceImpl extends BaseServiceImpl<PlanMaterialRepository,
    PlanMaterial, Long>
    implements PlanMaterialService {

  private final @NonNull MaterialRepository materialRepository;
  private final @NonNull MaterialTypeRepository materialTypeRepository;
  private final @NonNull PlanMaterialRepository planMaterialRepository;
  private final @NonNull ProcurementPlanRepository procurementPlanRepository;
  private final @NonNull MaterialDemandPlanRepository materialPlanRepository;
  private final @NonNull SysDepartmentRepository sysDepartmentRepository;
  private final @NonNull ApprovalRepository approvalRepository;
  private final @NonNull SysUserRepository sysUserRepository;
  private final @NonNull NotificationRepository notificationRepository;
  private final @NonNull NotifyUtil notifyUtil;
  // ......
}

@Service
@RequiredArgsConstructor
public class PlanMaterialServiceImpl extends BaseServiceImpl<PlanMaterialRepository,
    PlanMaterial, Long>
    implements PlanMaterialService {

  private final @NonNull MaterialRepository materialRepository;
  private final @NonNull MaterialTypeRepository materialTypeRepository;
  private final @NonNull PlanMaterialRepository planMaterialRepository;
  private final @NonNull ProcurementPlanRepository procurementPlanRepository;
  private final @NonNull MaterialDemandPlanRepository materialPlanRepository;
  private final @NonNull SysDepartmentRepository sysDepartmentRepository;
  private final @NonNull ApprovalRepository approvalRepository;
  private final @NonNull SysUserRepository sysUserRepository;
  private final @NonNull NotificationRepository notificationRepository;
  private final @NonNull NotifyUtil notifyUtil;
  // ......
}

这样他就有 10 个 Repository 需要注入了,但是主体确实是 PlanMaterial。。。大家如何处理这种情况的呢?

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2479 引用 • 7881 回帖 • 864 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    1372 引用 • 8985 回帖 • 575 关注
被采纳的回答
  • ferried

    你这么想,注入 10 个,比在构造器里传 10 个是不是更简洁了,在构造器里传 10 个是不是比在构造器里 new 10 个更简洁了。...

9 回帖
请输入回帖内容...
  • Eddie

    service 再划分

  • 88250

    不算多,没关系。逻辑清晰,按套路出牌就行。

    1 回复
  • AdlerED

    多好看啊

  • lizhongyue248

    主要是写测试的时候,不希望整个项目所有组件全部注入进去,不然启动太慢了,就想注入一个 service 然后测试,所以要用构造函数一个一个的手动注入。。。 传十多个看着烦死了 😝

    1 回复
  • ferried

    你这么想,注入 10 个,比在构造器里传 10 个是不是更简洁了,在构造器里传 10 个是不是比在构造器里 new 10 个更简洁了。...

  • nobt

    @Lazy doge

    1 回复
  • lizhongyue248

    只是测试的时候不想让他加载,正常情况下是要让他加载的 -0-

  • T-Aoker

    在分拆成多个 service

    1 回复
  • lizhongyue248

    感觉再拆分多个,每个 service 之间就有了耦合了。。。

请输入回帖内容 ...