首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于数据转换的Java函数与Spring转换器

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

Stack Overflow用户
提问于 2018-08-01 12:02:35
回答 2查看 940关注 0票数 3

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

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

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

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

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-01 12:24:08

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

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

因此Spring的转换器功能并不主要是转换数据,而是扩展Spring框架本身的功能。使用它自己手动转换数据是一种副作用,而不是真正的用例。

票数 2
EN

Stack Overflow用户

发布于 2018-08-01 12:12:22

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51632818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档