Spring 推土机,如何按Id使用自定义转换器?

Spring 推土机,如何按Id使用自定义转换器?,spring,dozer,Spring,Dozer,我正在构建一个Sprint引导应用程序,在这里我发出一个请求,然后得到一个响应。 在发出请求之前,我需要转换数据。但是,要转换的目标类可能与要转换的源类不同。 例如: public Request getTransformedRequest(Request, String typeTransformation) { Request transformedRequest= mapper.map(request,Request.class); return t

我正在构建一个Sprint引导应用程序,在这里我发出一个请求,然后得到一个响应。 在发出请求之前,我需要转换数据。但是,要转换的目标类可能与要转换的源类不同。 例如:

    public Request getTransformedRequest(Request, String typeTransformation) {
        Request transformedRequest= mapper.map(request,Request.class);
        return transformedRequest;
}
如果我没有使用转换器,并且我只使用普通推土机映射,那么我可以在mapping.xml中包含以下内容:

<mapping map-id="Type1">
  <class-a>ClassA</class-a>
  <class-b>ClassB</class-b>   
</mapping> 
<mapping map-id="Type2">
 <class-a>ClassA</class-a>
 <class-b>ClassC</class-b>   
</mapping> 
我的问题是,我不能对转换器执行相同的操作。我希望为同一源类使用不同的转换器:

  <convertertype="CustomConverterType1" >
    <class-a>
      ClassA
    </class-a>
    <class-b>
      ClassB
    </class-b>
  </converter>
 <converter type="CustomConverterType2" >
    <class-a>
      ClassA
    </class-a>
    <class-b>
      ClassC
    </class-b>
  </converter>

甲级
B类
甲级
C类
因此,在我的场景中,我想选择(如在映射id示例中)我想要的转换器。
我真的很感谢您的帮助。提前感谢。

自定义转换器通常用于字段级别,以便在一对类的总体映射中定制特定字段对的映射。在此表单中,Dozer执行其余映射,并仅为具有客户转换器的字段调用转换器

<mapping>
    <class-a>ClassA</class-a>
    <class-b>ClassB</class-b>
    <field custom-converter="CustomConverterType1">
        <a>field1</a>
        <b>field1Prime</b>
    </field>
</mapping>
<mapping>
    <class-a>ClassA</class-a>
    <class-b>ClassC</class-b>
    <field custom-converter="CustomConverterType2">
        <a>field1</a>
        <b>field1Prime</b>
    </field>
</mapping>

甲级
B类

嗨!谢谢是的,我知道,但我想在类型级别使用转换器,但对同一对使用不同的转换器,在运行时选择我想要的转换器。我可以对映射id执行相同的操作,但我想对转换器执行此操作。提前谢谢!为什么要用推土机呢?为什么不直接从代码中根据您的情况调用正确的转换器?因为我想使用推土机功能。谢谢!我一定错过了什么。通过在顶级类型映射中使用自定义转换器,转换器将完成所有工作,从而绕过推土机的功能。在这里,除了调用Dozer,Dozer在哪里发挥作用,而Dozer反过来只调用您的自定义转换器?
<mapping>
    <class-a>ClassA</class-a>
    <class-b>ClassB</class-b>
    <field custom-converter="CustomConverterType1">
        <a>field1</a>
        <b>field1Prime</b>
    </field>
</mapping>
<mapping>
    <class-a>ClassA</class-a>
    <class-b>ClassC</class-b>
    <field custom-converter="CustomConverterType2">
        <a>field1</a>
        <b>field1Prime</b>
    </field>
</mapping>
<configuration>
    <custom-converters>
        <converter type="CustomConverterType1">
            <class-a>ClassA</class-a>
            <class-b>ClassB</class-b>
        </converter>
        <converter type="CustomConverterType2">
            <class-a>ClassA</class-a>
            <class-b>ClassC</class-b>
        </converter>
    </custom-converters>
</configuration>