Spring Boot 循环依赖设计问题

3

是的,这个问题又来了...

我设计了一个批处理系统,它调用ActionService的notify方法,而在notify方法中,根据调用方式,会调用batch service的create方法。

示例代码块如下:

@Service
public class BatchService{
  private final BatchRepository batchRepository;
  private final ActionService actionService;

  public Batch create(Batch batch){
     return batchRepository.save(batch);
  }

  public void triggerNotifiers(){
     ...
     actionService.notify(...);
     ...
  }
} 


@Service
public class ActionService{
  private final ActionRepository actionRepository;
  private final BatchService batchService;

  public void notify(...){
     ...
     if(/*some special cases*/)
         batchService.create(...);
     ...
  }
} 

批处理服务的功能是调用操作服务的通知方法。根据传入的通知数据,操作服务可以创建相应的未来通知。

因此它们之间相互依存。

您认为有更好的方式/逻辑/设计来实现这个功能吗?

1个回答

1

在我写这个问题的时候,我想出了一种方法来实现它:

@Component
public class Batch{
  private final BatchService batchService;
  private final ActionService actionService;

  public void triggerNotifiers(){
     ...
     batchService.findProperBatch(...);
     actionService.notify(...);
     ...
  }
} 

@Service
public class BatchService{
  private final BatchRepository batchRepository;

  public Batch create(Batch batch){
     return batchRepository.save(batch);
  }

  public Batch findProperBatch(...){
     ...
     return batch;
  }

} 

@Service
public class ActionService{
  private final ActionRepository actionRepository;
  private final BatchService batchService;

  public void notify(...){
     ...
     if(/*some special cases*/)
         batchService.create(...);
     ...
  }
} 

请毫不犹豫地分享您的想法,如果您有更好/替代方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接