【发布时间】:2021-05-22 04:01:05
【问题描述】:
我有 2 个服务 A 和 服务 B。
一些上游正在使用请求示例 json 调用服务 A:
type of given request model class here is ServiceARequest
{
"A": {
"pwId": 0,
"pwType": 0,
"pwMode": 0
},
"B": "string",
"C": {
"ccNum": "string"
}
}
我需要像这样从服务 A 请求服务 B:
type of given request model class here is ServiceBRequest
{ "CCM": {
"A": {
"pwid": 0,
"pwyype": 0,
"pwmode": 0
},
"B": "string",
"C": {
"ccnum": "string"
}
}
}
如您所见,ServiceARequest 到 ServiceBRequest 的 mapping 字段存在问题,因为某些属性的大小写不同,但它们的类型相同。
那么在这种情况下我该怎么办?我是否需要创建 2 个具有相同名称和不同属性名称的类,然后我需要将它们放在不同的包下,或者如果我对 A、B 和 C 使用相同的类,那么字段名称只能是 pwid 或 pwId
如何进行这种从 ServiceARequest 结构到 ServiceBRequest 的映射 在这里构造然后从 ServiceBResponse 到 ServiceARequest 的逆映射,使用 MapStruct? ServiceBRequest 和 ServiceBResponse 的结构完全相同。
【问题讨论】:
-
@SergeiTonoian,我阅读了博客,但我仍然不清楚,在我的情况下应该如何完成。
-
我不太了解这与 MapStruct 的关系。你能分享一些yohr pojos / mappers吗
-
@tusharRawat 我已经发布了一个示例如何在您的情况下完成
-
@Filip,我需要以某种方式使用 MapStruct 来定义 Mapper 接口,以便我在内部完成映射,而不是在外部完成。
标签: java spring-boot lombok mapstruct