我需要在生成的映射器实现中注入一个 spring 服务类,以便我可以通过以下方式使用它
@Mapping(target="x", expression="java(myservice.findById(id))")"
这适用于 Mapstruct-1.0 吗?
正如 brettanomyces 所评论的,如果该服务未用于表达式以外的映射操作,则不会被注入。
我发现的唯一方法是:
- 将我的映射器接口转换为抽象类
- 将服务注入抽象类
- 使其受到保护,以便抽象类的“实现”可以访问
我正在使用 CDI 但它应该与 Spring 相同:
@Mapper(
unmappedTargetPolicy = org.mapstruct.ReportingPolicy.IGNORE,
componentModel = "spring",
uses = {
// My other mappers...
})
public abstract class MyMapper {
@Autowired
protected MyService myService;
@Mappings({
@Mapping(target="x", expression="java(myservice.findById(obj.getId())))")
})
public abstract Dto myMappingMethod(Object obj);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)