我看着几个月前写的一些代码,偶然发现执行以下操作的某些服务类:

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

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

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

    我正在查看文档,除了提到任何Spring转换器实现都是线程安全的事实之外,我看不到任何其他明显的区别。

    我倾向于大量使用Spring转换器,因为我可以在各个地方注入它们并重新使用它们,但是我想使用包含自执行lambda函数的服务类也可以做到这一点。

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

    最佳答案

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

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

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

    10-08 09:06
    查看更多