首页 > 解决方案 > Spring接口转换器

问题描述

我有要转换为 ClassC 的 ClassA 和 ClassB,但如果我想使用 Spring 转换器:

org.springframework.core.convert.converter
Interface Converter<S,T>
Type Parameters:
S - the source type
T - the target type

我应该创建另一个classD,比如

ClassD classD {
      ClassA classA;
      ClassB classB;
}

然后从 classD 到 classC ?

标签: javaspringspring-bootspring-mvcfunctional-programming

解决方案


正如 Spring 的文档Converter所说:

转换器将类型的源对象转换为类型S的目标T

S源类型和T目标类型也是如此。

因此,如果您想转换ClassAClassB您将创建Converter<ClassA, ClassB>实现。您不能Converter一次将两种类型转换为单一类型。例如,您必须创建两个转换器以按此顺序进行转换ClassA -> ClassB -> ClassC

ClassA或者为and创建一些包装器类型ClassB

public class Wrapper {
    private ClassA a;
    private ClassB b;
}

然后创建一个转换器Converter<Wrapper, ClassD>实现:

Converter<Wrapper, ClassC> converter = wrapper -> {
        //access wrapper
        wrapper.getA();
        wrapper.getB();
        return new ClassC();
};

推荐阅读