当前位置: 首页 > 知识库问答 >
问题:

Mapstruct -没有类型的合格bean

黎曾笑
2023-03-14

我尝试自动连接我的mapstruct mapper:

@Mapper(uses = {
                A.class,
                B.class,
                C.class
        })
public interface WindowDtoMapper {

    WindowDtoMapper INSTANCE = Mappers.getMapper(WindowDtoMapper.class);
    DetailedDto mapToDetailedDto(Window window);
    ReadDto mapToReadDto(Window window);
}

这是可行的:

return WindowDtoMapper.INSTANCE.mapToDetailedDto(window)

但是为什么我不能使用:

@RequiredArgsConstructor
public class AAA(){
private final WindowDtoMapper windowDtoMapper;


windowDtoMapper.mapToDetailedDto(window)
}

我得到以下错误:

导致原因:org . spring framework . beans . factory . nosuchbeandidefinitionexception:没有类型为“pl . comp . window . application . mapper . windowdtomapper”的合格bean可用:至少应有一个符合autowire候选资格的bean。依赖项注释:{ } at org . spring framework . beans . factory . support . defaultlistablebeanfactory . raisenomatchingbeanfactory(defaultlistablebeanfactory . Java:1717)at org . spring framework . beans . factory . support . defaultlistablebeanfactory . doresolvediency(defaultlistablebeanfactory . Java:1273)

也许我应该坚持第一个可行方案?是不是不好的解决方案

共有1个答案

长孙哲
2023-03-14

默认情况下,地图结构生成普通的 Java 类,仅此而已。Spring没有办法知道你想让这些豆子。

如MapStruct文档中所述,您可以使用@Mapper(componentModel=“spring”)让MapStrect在它创建的类上放置@Component(您需要确保带有映射器的包正在扫描组件)。

 类似资料: