Java 在其他映射中使用的Mapstructs抽象装饰器会导致不明确的异常

Java 在其他映射中使用的Mapstructs抽象装饰器会导致不明确的异常,java,mapstruct,Java,Mapstruct,我实现了一个decorator来定制实体的映射,比如MappingDecoratorA,它是一个抽象类,实现了mapstructs的MapperA接口 public abstract class MappingDecoratorA implements MapperA { ...} 在另一个映射中,我使用MapperA,比如MappingB,它使用cdi @Mapper(uses = { MapperA.class}, componentModel = "cdi") public in

我实现了一个decorator来定制实体的映射,比如MappingDecoratorA,它是一个抽象类,实现了mapstructs的MapperA接口

public abstract class MappingDecoratorA implements MapperA {
...}
在另一个映射中,我使用MapperA,比如MappingB,它使用cdi

@Mapper(uses = { MapperA.class},
    componentModel = "cdi")
public interface MapperB{
Mapstructs为MapperA生成两个实现,即MapperAImpl和MapperAImpl。在我的情况下,注入机制不知道使用哪个实现。结果是侦听这两个实现的不明确异常


mapstruct是否支持我的问题的解决方案?

当使用非默认的
组件模型时,您必须对所有映射程序使用它。特别是如果你想重复使用它们。否则,特定组件将不知道如何注入和创建映射器

因此,解决您的问题的方法是

@Mapper(componentModel = "cdi")
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
}

谢谢你的建议。这是一个很好的暗示。最终的解决方案是使用CDI装饰器而不是mapstruct装饰器。使用带有beans.xml条目的CDI装饰器解决了这个问题。答案就在我面前::-)
@Mapper(componentModel = "cdi")
@DecoratedWith(MappingDecoratorA .class)
public interface MapperA {
}