猿问

用于数据转换的 Java 函数与 Spring Converter

我正在查看几个月前编写的一些代码,偶然发现了一些执行以下操作的服务类:

  1. 查询数据库并获取实体列表(为方便起见,我们将它们视为Person实体)。

  2. 流式PersonDto传输查询列表并将检索到的数据转换为传输对象列表。

现在,对于第 2 步,使用自定义 Spring 转换器执行从类型 A ( Person) 到类型 B ( PersonDto) 的转换。

现在我的问题如下。可以使用类似的java.util.函数而不是 Spring 转换器来执行相同的精确操作。那么使用它代替方法有什么好处呢?

我正在查看文档,除了提到任何 Spring 转换器实现都是线程安全的这一事实之外,我没有看到任何其他明显的差异。

我倾向于经常使用 Spring 转换器,因为我能够将它们注入到不同的地方并重新使用它们,但我认为使用包含自执行 lambda 函数的服务类也可以做到这一点。

因此,如上所述,使用 Spring 转换器与普通函数的可能优点/缺点是什么。


慕尼黑8549860
浏览 170回答 2
2回答

MMMHUHU

根据您的用例,可能没有。转换器部分是在 Spring 3 中实现的,支持 Java 5(和 6),所以Function不存在。但重要的是,转换器功能是 Spring 的一部分。虽然您可以轻松调用您的函数,但 Spring 对此一无所知。Spring 确实了解它自己的转换器,因此您可以编写转换器,使整个 Spring 框架能够了解如何转换A为B,ASpring 不理解的内容以及B它所做的内容。在某些特殊情况下可能需要这样做,即使最常见的用例已经为您编写好了。所以 Spring 的 Converter 功能主要不是关于转换数据,而是关于扩展 Spring 框架本身的功能。使用它自己手动转换数据与其说是实际用例,不如说是一种副作用。

炎炎设计

当您注册Converter<S,T>到 Spring 容器时,Spring 能够自动为您转换值。
随时随地看视频慕课网APP

相关分类

Java
我要回答