代码之家  ›  专栏  ›  技术社区  ›  akourt

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

  •  3
  • akourt  · 技术社区  · 6 年前

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

    1. 查询数据库并获取实体列表(为了方便起见,让我们考虑一下 Person 实体)。
    2. 对查询的列表进行流式处理,并将检索到的数据转换为 PersonDto 转移物体。

    现在,对于步骤2,使用自定义弹簧转换器执行从类型a的转换( )B类( PersonDto公司 ).

    现在我的问题是。同样的精确操作可以使用类似的 java.util. 功能代替弹簧转换器。那么用它代替方法有什么好处呢?

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

    我经常使用Spring转换器,因为我可以在不同的地方注入它们并重用它们,但是我想对于包含自动执行lambda函数的服务类也可以这样做。

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   Kayaman    6 年前

    可能没有任何依赖于您的用例。转换器部分是在Spring 3中实现的,支持Java 5(和6),因此 Function 不在那里。

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

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

        2
  •  0
  •   Mạnh Quyết Nguyễn    6 年前

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