以反应方式创建DTO的正确方法是什么?

时间:2019-04-05 12:59:55

标签: spring-boot dto reactive reactor reactor-netty

我使用SpringBoot,并且有一些响应式API(控制器调用服务,该服务基于MongoReactiveRepositories调用存储库)

由于我不希望用户直接看到我的模型对象,所以我想拥有DTO。

一个DTO可以基于多个模型的信息。

例如:给定两个模型项

ItemA:
 infoA:String

ItemB:
 infoB:String

我要创建一个DTO项目

ObjectDTO:
 infoA: String
 infoB: List<ItemB>

在我的对象模型和DTO之间反应性映射数据的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

只需使用Mono.zip(https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#zip-reactor.core.publisher.Mono-reactor.core.publisher.Mono-java.util.function.BiFunction-)将2个结果合并为一个。

return Mono.zip(repo1.getItemA(), repo2.getItemB(),
   (itemA, itemB) -> new ObjectDTO(itemA.getInfoA(), itemB.getInfoB())
);

返回itemA和itemB的方法当然应该返回Mono