【问题标题】:Configurable (e.g. XML) Java Bean to Bean Mapping Framework可配置(例如 XML)Java Bean 到 Bean 映射框架
【发布时间】:2012-03-15 09:36:55
【问题描述】:

我正在寻找一个 Bean 到 Bean 映射 Java 框架,它的映射规则可以在 Java 代码之外/不在 Java 代码中定义。源 bean 和目标 bean 有 n 个子 Bean,因此映射规则可能有点复杂(不是简单的一对一映射)。

关于这个过程的一点概述: 这是简单的 ETL 过程,但具有可配置的映射逻辑。 我使用 Spring Batch 将多行记录(固定长度文件)加载到 bean 中。它只是将记录表示为 javabean,以将其用作定义的映射规则的基础。此映射的结果是另一个 javabean,它与源构建完全不同。在这里,我想在这个到 java bean 之间使用一个通用的映射框架。

Spring Batch 部分非常清晰并已实现。

当然我可以在 java 中硬编码定义它,但出于透明的原因,我必须在 java 代码之外导出这个映射逻辑。

有人知道这样的框架吗?一个存在吗?我找到了 Dozer,但我认为我无法在他们的 XML 中定义一些复杂的映射规则。

【问题讨论】:

    标签: java frameworks mapping javabeans configurable


    【解决方案1】:

    也许吧。我会为此使用Java Scripting API。它允许您加载脚本(JavaScript、Beanshell、Groovy 等)并运行它们。您可以将一行输入(或整个模型)放入变量中,然后脚本可以创建新的对象结构。

    【讨论】:

      【解决方案2】:

      尝试使用 JMapper 框架。 在 XML 中,您可以使用占位符编写 STATIC 和 DYNAMIC 转换来使用字段的值和名称,例如,如果您需要从地图中获取和设置值,代码如下:

      <conversion name="fromMapToAll" from="map" type="DYNAMIC">
              return (${destination.type}) ${source}.get("${destination.name}");
      </conversion>
      <conversion name="fromAllToMap" to="map" type="DYNAMIC">
              ${destination}.put("${source.name}",${source});
              return ${destination};
      </conversion>
      

      请参阅wiki 页面了解更多信息。

      【讨论】:

        猜你喜欢
        • 2012-10-11
        • 2012-04-16
        • 1970-01-01
        • 2014-10-30
        • 2011-08-05
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 1970-01-01
        相关资源
        最近更新 更多