以反应方式创建 DTO 的正确方法是什么?
What is the proper way to create DTO in a reactive manner?
我使用 SpringBoot 并且我有一些响应式 API(控制器调用一个服务,该服务调用基于 MongoReactiveRepositories 的存储库)
因为我不想让用户直接看到我的模型对象,所以我想要 DTO。
一个DTO可以基于多个模型的信息。
示例:给定两个模型项
ItemA:
infoA:String
ItemB:
infoB:String
我想创建一个 DTO 项目
ObjectDTO:
infoA: String
infoB: List<ItemB>
在我的对象模型和 DTO 之间反应映射数据的正确方法是什么?
只需使用 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())
);
方法 returning itemA 和 itemB 当然应该 return Mono
。
我使用 SpringBoot 并且我有一些响应式 API(控制器调用一个服务,该服务调用基于 MongoReactiveRepositories 的存储库)
因为我不想让用户直接看到我的模型对象,所以我想要 DTO。
一个DTO可以基于多个模型的信息。
示例:给定两个模型项
ItemA:
infoA:String
ItemB:
infoB:String
我想创建一个 DTO 项目
ObjectDTO:
infoA: String
infoB: List<ItemB>
在我的对象模型和 DTO 之间反应映射数据的正确方法是什么?
只需使用 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())
);
方法 returning itemA 和 itemB 当然应该 return Mono
。