我想在MapperA的默认方法中使用MapperB
与此问题类似:How can I use another mapping from different class in mapstruct
然而,这个问题并没有要求"自定义Map器",即作为自己的接口存在的Map器。
我怎么可能做到呢?
我有一个MapperA接口和一个MapperB接口
如何在MapperA中使用MapperB?
像这样:
@Mapper
public interface MapperA {
@Autowired
MapperB mapperB;
default ArrayList<AudioDto> audiosToDto(List<Audio> audios, ApplicationUser loggedInUser) {
Stream<AudioDto> audiosStream = audios.stream().map((Audio audio) -> mapperB.audioToAudioDto(audio, loggedInUser));
return audiosStream.collect(Collectors.toCollection(ArrayList::new));
}
上面的代码不起作用,现在我尝试添加@Component(到MapperA和MapperB)来自动连接它,但它仍然给我:
@Autowired〈-不建议进行场注入
Map器B;变量'audioMapper'可能尚未初始化
即使是在Maven清理项目以去除MapperAImpl之后。
1条答案
按热度按时间b1payxdu1#
应该将
MapperA
定义为抽象类而不是接口,并使用setter注入来注入MapperB
,如下所示: