mapstruct-no类型的限定bean

xfyts7mz  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(431)

我尝试自动连接mapstructMap器:

@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:没有类型为“pl.comp.window.application.mapper.windowdtomapper”的合格bean可用:至少需要1个符合autowire候选的bean。依赖项注解:{}位于org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenomatchingbeanfound(defaultlistablebeanfactory)。java:1717)位于org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory)。java:1273)
也许我应该继续使用第一个有效的解决方案?这是不是个坏办法?

bq3bfh9z

bq3bfh9z1#

默认情况下,mapstruct生成普通的java类,仅此而已。Spring没有办法知道你想要这些是豆子。
如mapstruct文档中所述,您可以使用 @Mapper(componentModel = "spring") 使mapstruct @Component 在它创建的类上(您需要确保带有Map器的包正在被扫描)。

相关问题