在资源控制器中使用多个服务的最佳方法是什么?

2022-09-04 21:53:14

我有一个控制器调用三个服务:

public class ProductController() {
    @Autowired
    private AccountService accountService;

    @Autowired
    private ProcessService processService;

    @Autowired
    private releaseService releaseService;

    @RequestMapping("/process")
    public Product process(@RequestParam(value="name", defaultValue="docs")     ProductProcessed process) {

        accountService.notify();
        releaseService.sendRelease(process);


        return processService.process(process);
    }
}

封装此服务调用的最佳方法是什么?


答案 1

您正在寻找的可能是一些设计模式。我的方法可能是在细粒度服务(帐户,流程和发布)上创建一个粗粒度的外观。(另请参见粗粒度与细粒度)

立面基本上将注入这3个服务,并封装您使控制器当前执行的行为。通过这种方式,您将最大限度地减少在控制器中调用粗粒度服务的业务逻辑,从而进一步封装系统的内脏。


答案 2

您已经将它们标记为私有,因此无法在此类外部调用它们。这是封装的。

一种常见的做法是自动连接它们,以便可以修改服务的实现。


推荐