为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑8549860 2021-06-10 18:01:26
我正在查看几个月前编写的一些代码,偶然发现了一些执行以下操作的服务类:查询数据库并获取实体列表(为方便起见,我们将它们视为Person实体)。流式PersonDto传输查询列表并将检索到的数据转换为传输对象列表。现在,对于第 2 步,使用自定义 Spring 转换器执行从类型 A ( Person) 到类型 B ( PersonDto) 的转换。现在我的问题如下。可以使用类似的java.util.函数而不是 Spring 转换器来执行相同的精确操作。那么使用它代替方法有什么好处呢?我正在查看文档,除了提到任何 Spring 转换器实现都是线程安全的这一事实之外,我没有看到任何其他明显的差异。我倾向于经常使用 Spring 转换器,因为我能够将它们注入到不同的地方并重新使用它们,但我认为使用包含自执行 lambda 函数的服务类也可以做到这一点。因此,如上所述,使用 Spring 转换器与普通函数的可能优点/缺点是什么。
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

根据您的用例,可能没有。转换器部分是在 Spring 3 中实现的,支持 Java 5(和 6),所以Function不存在。

但重要的是,转换器功能是 Spring 的一部分。虽然您可以轻松调用您的函数,但 Spring 对此一无所知。Spring 确实了解它自己的转换器,因此您可以编写转换器,使整个 Spring 框架能够了解如何转换ABASpring 不理解的内容以及B它所做的内容。在某些特殊情况下可能需要这样做,即使最常见的用例已经为您编写好了。

所以 Spring 的 Converter 功能主要不是关于转换数据,而是关于扩展 Spring 框架本身的功能。使用它自己手动转换数据与其说是实际用例,不如说是一种副作用。


查看完整回答
反对 回复 2021-06-23
?
炎炎设计

TA贡献1808条经验 获得超4个赞

当您注册Converter<S,T>到 Spring 容器时,Spring 能够自动为您转换值。


查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信