dai*_*i21 8 java javabeans autowired spring-boot mapstruct
@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);
}
Run Code Online (Sandbox Code Playgroud)
如何一起使用mapstruct和springboot bean?@自动连线
Geo*_*vov 18
您需要将接口更改为抽象类并将PersonInfoSearchService调用移至@Named方法:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,您不需要声明INSTANCE变量,因为您正在使用componentModel = "spring". 您可以简单地将映射器自动连接到其他 spring bean 中。
| 归档时间: |
|
| 查看次数: |
13416 次 |
| 最近记录: |