我想在 DTO 的单个项目转换之后使用专用的 @AfterMapping 应用装饰,在处理其集合转换风格时使用另一个专用的 @AfterMapping 但不是两者兼而有之。
public abstract CatUI convert(Cat cat);
public abstract List<CatUI> convert(List<Cat> cats);
@AfterMapping
public void populateCatName(Cat cat, @MappingTarget CatUI catUI) {
String name = _someRemoteService.getCatName(catUI.getId());
catUI.setName(name);
}
@AfterMapping
public void populateCatNames(List<Cat> cats, @MappingTarget List<CatUI> catUIs) {
Map<Integer,String> idToNameMap = _someRemoteService.getCatNames(catUIs.stream().map((c) -> c.getId() ).collect(Collectors.toList());
catUIs.forEach((c) -> c.setName(idToNameMap(c.getId())));
}
我不想在处理 List 转换时调用 populateCatName 并因此复制我的装饰。
无论如何要这样做?