java—如何在api开始时在db中插入域对象

ssm49v7z  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(248)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

27天前关门了。
改进这个问题
我正在用jersey和jetty用java构建restapi。我有一个复杂的域,其中有一个类(workers)。我希望能够通过一个职位动态添加工人。但是,业务逻辑要求我有几个具有固定值的默认worker。所以在api开始时,我需要将它们添加到我的db中(现在它在内存中)。在干净的代码方面,最好的方法是什么?
我考虑过用这些默认的worker来初始化我的存储库,但是我觉得它违反了workerrepo类的srp,我觉得这应该是应用层的工作,因为它特定于这个应用程序,而不是域(如果这有意义的话)。我应该将此初始化的逻辑移到哪里?谢谢!

zkure5ic

zkure5ic1#

经过一番思考,我将设置移到了应用程序层,在那里我实际示例化了所有依赖项(在一个名为applicationcontext的类中)。
我创建了一个接口workercontext,并创建了一个具体的实现workercontextx,其中x=nameofapp。此上下文类包含所有默认值,并使用注入的repo将这些默认值添加到repo中。因此,在api启动时,在applicationcontext类中,我调用设置WorkerReporto的workercontext方法。
这样,我可以很容易地在眨眼间改变设置策略,而且它不再违反回购协议中的srp。我现在尊重dip,因为repo(在域中)不依赖于应用层指定的东西。
我发布这个,因为我认为这是一个体面的解决方案,可以帮助其他人,随时批评或改进这个解决方案。

llmtgqce

llmtgqce2#

从我的Angular 来看,我会像设计所有其他用例一样设计您的需求。e、 通用航空公司 SetupWorkerInteractor .
我会用一个 ApplicationRunner 它封装了应用程序启动逻辑。e、 g.解析命令行参数,构建应用程序上下文,调用初始化过程并运行应用程序。当然,我也会把这些方面分为不同的类别,但我想你明白我的意思了。
在我的情况下,我会使用 ApplicationLog 作为设置用例输出的“演示者”。
为了简单起见,我省略了实体和请求/响应模型。

如果我这样做的话 SetupWorkerInputBoundary 是从 ApplicationRunner ,一个 RestService 或例如,信息系统。我也可以像其他用例一样测试设置。

相关问题