java - 其他映射中使用的 Mapstructs 抽象装饰器导致模棱两可的异常
问题描述
我实现了一个装饰器来自定义一个实体的映射,比如说MappingDecoratorA,它是一个抽象类,实现了mapstructs的MapperA接口。
public abstract class MappingDecoratorA implements MapperA {
...}
@Mapper
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
在另一个映射中,我使用 MapperA,比如说 MappingB,它使用 cdi
@Mapper(uses = { MapperA.class},
componentModel = "cdi")
public interface MapperB{
Mapstructs 为 MapperA 生成两个实现,MapperAImpl 和 MapperAImpl_。在我的情况下,注入机制不知道要使用哪个实现。结果是一个模棱两可的异常,监听了这两个实现。
mapstruct 是否支持解决我的问题?
解决方案
使用非默认值时componentModel
,您必须将其用于所有映射器。特别是如果您想重用它们。否则特定组件将不知道如何注入和创建映射器。
因此,解决您的问题的方法是
@Mapper(componentModel = "cdi")
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
}
推荐阅读
- scala - 斯卡拉 | 在二叉树中折叠
- javascript - 使用 JSON.parse 解析错误?
- python - 有关问题:Featured Enum 而不是 Switch ... 使用 lambda、枚举、闭包函数
- collections - 带条件退出队列,收集以过滤目的地
- r - Rcpp::IntegerVector(曾经)可以与 OpenMP 一起使用吗?
- angular - 我们如何从 laravel 的后端向 Angular 的前端发送实时通知
- c++ - 你可以在 C++ 中为类对象使用不同的常量吗?
- r - 使用索引将图像堆叠到R中的循环中
- javascript - 如何在 jquery 或 javascript 的选项卡窗格中添加和删除多个类
- windows - 使用 Windows 批处理文件检查并获取服务器访问权限