gpt4 book ai didi

spring - 使用 componentModel = "spring"的 Mapstruct 依赖注入(inject)给出空对象

转载 作者:行者123 更新时间:2023-12-03 19:31:07 25 4
gpt4 key购买 nike

我正在尝试使用 Spring 注入(inject)映射器对象(类是 TypeMapper)依赖项,如下所示,

@Mapper(componentModel = "spring",
uses = {TypeMapper.class})
public interface AttachmentMapper {

AttachmentMapper MAPPER = Mappers.getMapper(AttachmentMapper.class);

@Mappings({
@Mapping(source = "type", target = "type") })
AttachmentDTO toDTO(Attachment attachment);
}

TypeMapper 的代码如下,
@Component
@Mapper
public abstract class TypeMapper {

public abstract Type mapType(DtoType DtoType);

@InheritConfiguration(name = "mapType")
public abstract DtoType mapDtoType(Type type);
}

生成的 AttachmentMapperImpl代码如下,
public class AttachmentMapperImpl implements AttachmentMapper {

@Autowired

private TypeMapper typeMapper;

public AttachmentDto toDTO(Attachment attachment) {

if ( attachment == null) {
return null;
}

attachmentDTO.setType(typeMapper.mapDtoType(attachment.getType()));

return attachmentDTO;
}


问题出在生成的代码中, @Autowired typeMapper一片空白。谁能阐明我在这里做错了什么?

最佳答案

TypeMapper不使用 Spring componentModel .您需要删除 @Component来自 TypeMapper并使用 @Mapper(componentModel = "spring")反而。

如果您使用 AttachmentMapper MAPPER = Mappers.getMapper(AttachmentMapper.class);获取映射器然后这是错误的 Mappers factory 只能与 default 一起使用componentModel .如果您使用的是 Spring,则应该注入(inject)映射器。

关于spring - 使用 componentModel = "spring"的 Mapstruct 依赖注入(inject)给出空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54337545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com