我尝试自动连接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)
也许我应该继续使用第一个有效的解决方案?这是不是个坏办法?
1条答案
按热度按时间bq3bfh9z1#
默认情况下,mapstruct生成普通的java类,仅此而已。Spring没有办法知道你想要这些是豆子。
如mapstruct文档中所述,您可以使用
@Mapper(componentModel = "spring")
使mapstruct@Component
在它创建的类上(您需要确保带有Map器的包正在被扫描)。