是否有一种方法可以自动连接在Spring中用Mapstruct编写的所有映射器,就像我们以前使用Spring Converter接口并调用一个toEntity(或convert或任何其他名称)一样?在春季,这很容易,因为它们都实现了相同的功能接口,并且通过使其从另一个接口继承,我们可以在运行时确定正确的转换器,如下所示:
import org.springframework.core.convert.converter.Converter;
public interface CustomConverter<S extends ..., T extends ...> extends Covnerter<S,T>{
boolean supports(Class clazz);
}
然后注入它很容易:
@Autowire
private final List<CustomConverter> myConverters;
,然后通过调用支持程序,我们将确定正确的转换器类型,然后对其进行转换。 我有这样的想法:
@Mapper
public interface MyMapper extends CustomMapper<MyEntity, MyDto>{
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
MyEntity toEntity(MyDto dto);
default boolean supports(Class clazz) {
return MyDto.class.isAssignableFrom(clazz);
}
和
public interface CustomMapper<T extends ..., S extends ...> {
boolean supports(Class clazz);
T toEntity(S dto);
}
但这不起作用。 您有什么建议吗?我可能会一起误解了这一切……谢谢。
答案 0 :(得分:0)
结帐:https://github.com/mapstruct/mapstruct-spring-extensions
作者根据this SO问题中的讨论制作并制作了适配器。
可以找到基于非弹簧的解决方案here。尽管您需要编写自己的注释处理器。