gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:53 25 4
gpt4 key购买 nike

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

  1. 查询数据库并获取实体列表(为方便起见,我们将它们视为 Person 实体)。
  2. 流式传输查询列表并将检索到的数据转换为 PersonDto 传输对象列表。

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

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

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

我倾向于大量使用 Spring 转换器,因为我能够在不同的地方注入(inject)它们并重新使用它们,但我想同样可以通过包含自执行 lambda 函数的服务类来完成。

如上所述,使用 Spring 转换器与普通函数相比可能有哪些优点/缺点。

最佳答案

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

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

因此 Spring 的 Converter 功能主要不是关于转换数据,而是关于扩展 Spring 框架本身的功能。与实际用例相比,使用它自己手动转换数据更多的是副作用。

关于用于数据转换的 Java Functions 与 Spring Converter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51632818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com