Mapstruct - 没有类型的限定 bean

Mapstruct - no qualifying bean of type

我尝试自动连接我的 mapstruct 映射器:

@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)
}

我收到以下错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'pl.comp.window.application.mapper.WindowDtoMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1717) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1273)

也许我应该继续使用第一个可行的解决方案?是不是不好的解决方案?

MapStruct默认生成普通的Java类,仅此而已。 Spring 无法知道您想要这些豆子。

the MapStruct documentation 中所述,您可以使用 @Mapper(componentModel = "spring") 让 MapStruct 将 @Component 放在它创建的 类 上(您需要确保包含映射器的包正在接受组件扫描。