我在Web应用程序中具有控制器层,该控制器层应从外部服务运行一些操作并发送ExternalServiceDTO。我的控制器层与ControllerDTO一起使用。我有ControllerDTO的域模型-它是具有域服务DomainModelService的DomainModel。
转换模型的最佳方法是什么?我看到2个选项
ControllerDTO-> DomainModel-> ExternalServiceDTO这样,我们 首先准备转换为领域模型,然后再准备外部 dto。外部dto将通过DomainModelService创建。
ControllerDTO-> ExternalServiceDTO这样,我们只是在准备 来自控制器dto的外部dto
请咨询
答案 0 :(得分:0)
您可以使用库Model Mapper。
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.4</version>
</dependency>
要将DTO转换为实体,可以使用以下命令:
private Entity toEntity(DTO dto) throws ParseException {
Entity entity = modelMapper.map(dto, Entity.class);
return entity;
}
在您的控制器上,您应该通过以下方式注入Mapper:
@Autowired
private ModelMapper modelMapper;
答案 1 :(得分:0)
我将使用实现构建器设计模式的@Builder
批注(Lombok)来解决此问题。这就是我在日常编码生活中执行此操作的方式。
public RecordingMetaDataDto toDto(RecordingMetaData metaData) {
return RecordingMetaDataDto.builder()
.id(metaData.getId())
.filename(metaData.getFilename())
.bucket(metaData.getS3Resource().getBucket())
.s3key(metaData.getS3Resource().getS3key())
.durationInMinutes(metaData.getDurationInMinutes())
.startTime(metaData.getStartTime())
.endTime(metaData.getEndTime())
.deviceIdentifier(metaData.getDeviceIdentifier())
.processingStatus(metaData.getProcessingStatus())
.storageClass(metaData.getStorageClass())
.createdAt(metaData.getAudit().getCreatedAt())
.createdBy(metaData.getAudit().getCreatedBy())
.modifiedAt(metaData.getAudit().getModifiedAt())
.modifiedBy(metaData.getAudit().getModifiedBy())
.build();
}
Maven的龙目岛依赖性:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>