首页 > 解决方案 > 如何在 API 开始时在 db 中插入域对象

问题描述

我用 jersey 和 jetty 用 java 构建了一个 REST API。我有一个复杂的域,其中有一个类(工人)。我希望能够通过 POST 动态添加工作人员。但是,业务逻辑要求我有一些具有固定值的默认工作人员。所以在 API 开始时,我需要将它们添加到我的数据库中(现在它在内存中)。就干净的代码而言,最好的方法是什么?

我考虑过使用这些默认工作人员初始化我的存储库,但我觉得它违反了 WorkerRepo 类的 SRP,我觉得这应该是应用程序层的工作,因为它特定于这个应用程序,而不是域,如果这使得感觉。我应该在哪里移动这个初始化的逻辑?谢谢!

标签: javarestjerseysolid-principlesclean-architecture

解决方案


从我的角度来看,我会像设计所有其他用例一样设计您的需求。例如一个SetupWorkerInteractor

我会使用一个ApplicationRunner封装应用程序启动逻辑的。例如解析命令行参数,构建应用程序上下文,调用初始化过程并运行应用程序。当然,我也会将这些方面分成不同的类别,但我想你明白我的意思。

在我的情况下,我将使用ApplicationLog作为设置用例输出的“演示者”。

为简单起见,我省略了实体和请求/响应模型。

SetupWorkerInteractor

如果我这样做,无论SetupWorkerInputBoundary是从ApplicationRunner、 aRestService还是例如消息传递系统调用都无关紧要。我也可以像任何其他用例一样测试设置。


推荐阅读