Java 使用其他映射器的Spring引导映射器

Java 使用其他映射器的Spring引导映射器,java,spring,mapstruct,Java,Spring,Mapstruct,是否可以在mapstruct中使用不同的映射器? e、 我有这个制图器 @Component @RequiredArgsConstructor public class ObjMapperImpl implements ObjMapper{ private final UserMapper userMapper; @Override public ObjDto daoToDto(Obj obj) { return ObjDto.builder()

是否可以在mapstruct中使用不同的映射器? e、 我有这个制图器

@Component
@RequiredArgsConstructor
public class ObjMapperImpl implements ObjMapper{
    private final UserMapper userMapper;

    @Override
    public ObjDto daoToDto(Obj obj) {
        return ObjDto.builder()
                .meetLink(obj.getMeetLink())
                .date(obj.getFromDate().toLocalDate())
                .user(userMapper.daoToDto(obj.getUser()))
                .build();
    }
}

是否可以将此实现更改为mapstruct?

以下代码应该适合您,ObjMapper的daotodo()的生成实现将调用UserMapper的daotodo(),由于属性名称不同,您只需指定从
fromDate
date
的映射


@映射器(组件模型=“spring”)
公共类ObjMapper{
@映射(source=“fromDate”,target=“date”)
ObjDto daotodo(Obj Obj);
}

MapStruct在文档中有一整节介绍

如果要在映射器中使用其他映射器,则需要使用
mapper\35; uses

e、 g


您可能应该为组件注释添加
component Model=“spring”)
。@Huu Phuong Vu感谢您为date添加解决方案,但它又如何呢
.user(userMapper.daotodo(obj.getUser())
@MateuszSobczak将由MapStruct处理,生成的
daotodo()
ObjMapperImpl的
将调用
UserMapperImpl的
daotodo()
。@daniu谢谢,更新了我的答案

@Mapper(componentModel = "spring", uses = UserMapper.class)
public class ObjMapper{

    @Mapping(source = "fromDate", target = "date")
    ObjDto daoToDto(Obj obj);
}