Mapstruct -没有类型的限定bean



我尝试自动连接我的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)
}

我得到以下错误:

引起的:org.springframework.beans.factory.NoSuchBeanDefinitionException:不类型限定bean"pl.comp.window.application.mapper.WindowDtoMapper":预计至少有1个bean符合自动候选资格。依赖注释:{}atorg.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound (DefaultListableBeanFactory.java: 1717)在org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java: 1273)

也许我应该继续使用第一个有效的解决方案?这是一个糟糕的解决方案吗?

默认情况下,MapStruct生成普通Java类,仅此而已。Spring无法知道您是否希望这些是bean。

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

相关内容

  • 没有找到相关文章

最新更新