0

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

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

Spring Batch 部分非常清晰和实施。

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

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

4

2 回答 2

1

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

于 2012-03-15T13:55:25.207 回答
0

尝试使用 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页面。

于 2015-03-30T09:55:10.730 回答