@Mapper(componentModel = "spring")
public interface DemoConvert {
public static DemoConvert INSTANCE = mappers.getMapper(DemoConvert.class);
@AutoWired
private PersonInfoSearchService personInfoSearchService;
@Mapping(source = "name", target = "name")
@Mapping(source = "id", target = "gender", expression = "java(personInfoSearchService.searchGenderById(id))")
PersonDTO toPerson(TeacherDTO teacherDTO);
}
如何一起使用mapstruct和springboot bean? @自动连线
您需要将接口更改为抽象类并移动PersonInfoSearchService
拨电至@Named
method:
@Mapper(componentModel = "spring")
public abstract class DemoConvert {
@Autowired
private PersonInfoSearchService personInfoSearchService;
@Mapping(source = "name", target = "name")
@Mapping(source = "id", target = "gender", qualifiedByName = "mapGenderFromId")
public abstract PersonDTO toPerson(TeacherDTO teacherDTO);
@Named("mapGenderFromId")
String mapGenderFromId(Long id) { // return type of gender, I took String. For id took Long
return personInfoSearchService.searchGenderById(id);
}
}
此外你不需要声明INSTANCE
变量,因为您正在使用componentModel = "spring"
。您可以简单地将映射器自动连接到其他 spring bean 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)