您经常需要从一堆源代码对象中创建目标对象。
我知道唯一的选择 - 创建一个包含必需类型作为其字段的高级合成类,并将其作为源转换为Spring Converter。但也许可以更容易地做到这一点?
提前致谢。
默认情况下,Spring似乎不提供暴露任何类型功能的接口,允许您接受多个源对象。
根据定义,Converter
接口的签名只接受S
,然后可以将其转换为T
。如果Spring将来会提供一个可以接受多个输入对象(比如S
,U
)的接口,然后用它来创建一个T
,但是从Spring 5.x开始,这仍然不是真的很好。当下。
如果您真的想使用Converter
接口的实现,您可以执行以下任何操作:
Pair
对象(假设您使用Spring
数据)。有关Pair
的文档可以找到here。假设您确实需要使用特定于Spring的转换器(如果您将它们全局注册到FormatterRegistry
,则上述情况应该可以正常工作)。
现在,假设上面的情况并非如此,那么没有什么可以阻止你使用原生JDK并使用BiFunction
的实现。事实上,你可以更进一步,使这个类成为Component
意味着你可以随时注入它。这样做的权衡?你将失去注册全局转换器的能力,但是如果你的项目没有使用它们,那么权衡是最小的(这里注意Converter
实现是线程安全的)。
最后,没有什么可以阻止你创建自己的@FunctionalInterface
,你将用它来执行任意数量的输入源转换。
总而言之,没有Spring不提供开箱即用的方式。它本来不错,但它似乎不可用。