Java 实现Spring'的最佳方法;当您需要将多个类型作为源传递时,可以使用s转换器接口
通常需要从一堆源对象生成目标对象 我知道唯一的选择——创建一个高级合成类,其中包含必需的类型作为字段,并将其作为源代码传递给Spring转换器。但也许可以做得更容易些Java 实现Spring'的最佳方法;当您需要将多个类型作为源传递时,可以使用s转换器接口,java,spring,converters,Java,Spring,Converters,通常需要从一堆源对象生成目标对象 我知道唯一的选择——创建一个高级合成类,其中包含必需的类型作为字段,并将其作为源代码传递给Spring转换器。但也许可以做得更容易些 提前感谢。默认情况下,Spring似乎没有提供一个接口来公开任何类型的功能,允许您接受多个源对象 根据定义,Converter接口的签名只接受一个S,然后可以转换为T。如果Spring将来能提供一个接口,可以接受多个输入对象(比如,S,U),然后用它来创建一个T,那就太好了,但从Spring 5.x开始,它仍然不存在 如果您确实想
提前感谢。默认情况下,Spring似乎没有提供一个接口来公开任何类型的功能,允许您接受多个源对象 根据定义,
Converter
接口的签名只接受一个S
,然后可以转换为T
。如果Spring将来能提供一个接口,可以接受多个输入对象(比如,S
,U
),然后用它来创建一个T
,那就太好了,但从Spring 5.x开始,它仍然不存在
如果您确实想使用转换器
接口的实现,可以执行以下任一操作:
- 如果您正在实例化自己,您很可能会传入一个或多个 对象通过构造函数。这意味着 实现类将开始有效地存储状态(即 在我看来,有些东西取代了简单转换器的工作)
- 创建将接受进位对象作为其源的转换器。
此模式可轻松用于将两个对象转换为一个对象
只需使用Spring
object(假设您使用SpringPair
数据)。可以找到与对相关的文档
FormatterRegistry
,则上述两种方法都可以正常工作
现在,假设上述情况不是真的,没有什么能阻止您使用本机JDK并使用BiFunction
的实现。事实上,您可以更进一步,使该类成为一个组件
,这意味着您可以随时注入它。这样做的权衡是什么?您将失去能力y来注册全局转换器,但是如果您的项目没有使用它们,那么权衡是最小的(这里需要注意的是,Converter
实现是线程安全的)
最后,没有任何东西可以阻止您创建自己的@functioninterface
,在给定任何数量的输入源的情况下,您将使用它来执行转换
总而言之,没有一个Spring不提供现成的方法来实现这一点。这本来很好,但它似乎不可用。默认情况下,Spring似乎不提供一个接口来公开任何类型的功能,允许您接受多个源对象 根据定义,
Converter
接口的签名只接受一个S
,然后可以转换成T
。如果Spring将来提供一个可以接受多个输入对象(例如,S
,U
)的接口,那就太好了这将用于创建T
,但从Spring 5.x开始,这仍然不存在
如果您确实想使用转换器
接口的实现,可以执行以下任一操作:
- 如果您正在实例化自己,您很可能会传入一个或多个 对象。这意味着 实现类将开始有效地存储状态(即 在我看来,有些东西取代了简单转换器的工作)
- 创建将接受进位对象作为其源的转换器。
此模式可轻松用于将两个对象转换为一个对象
只需使用Spring
object(假设您使用SpringPair
可以找到与对相关的文档
FormatterRegistry
,则上述两种方法都可以正常工作
现在,假设上述情况不是真的,没有什么能阻止您使用本机JDK并使用BiFunction
的实现。事实上,您可以更进一步,使该类成为一个组件
,这意味着您可以随时注入它。这样做的权衡是什么?您将失去能力y来注册全局转换器,但是如果您的项目没有使用它们,那么权衡是最小的(这里需要注意的是,Converter
实现是线程安全的)
最后,没有任何东西可以阻止您创建自己的@functioninterface
,在给定任何数量的输入源的情况下,您将使用它来执行转换
总而言之,任何Spring都不提供现成的方法来实现这一点。它本来很好,但似乎不可用。因此,例如,您需要一个接受U、s并返回T的双转换器?@Aris_Kortex Yes您需要转换器成为Spring特定转换器的具体原因是什么?您是否在格式化程序中使用它例如Registry?@Aris_Kortex否,但在我的项目中,我普遍使用Spring converter,我想知道它是否适合这种情况。Meh,前几天我也在想同样的事情。我将发布一个真正快速的答案。因此,举个例子,你需要一个双转换器,假设它接受U,s并返回T?@Aris_Kortex是的,有什么特别的吗c为什么您需要转换器成为Spring特定的转换器?例如,您是否在FormatterRegistry中使用它?@Aris_Kortex否,但在我的项目中,我无处不在地使用Spring转换器,我想知道它是否适合这种情况。Meh,前几天我也在想同样的事情。我将发布一个真正快速的答案。这篇文章保存了下来我的天,