我正在寻找一个Bean to Bean Mapping Java Framework,它们的映射规则可以在java代码之外定义。源bean和目标bean有n个subBeans,因此映射规则可能有点复杂(不是简单的一对一映射)。
关于流程的一点概述: 它是简单的ETL过程,但具有可配置的映射逻辑。 我使用Spring Batch将多行记录(固定长度文件)加载到bean中。它只是将记录表示为javabean,将其用作定义的映射规则的基础。这个映射的结果是另一个javabean,它是完全不同的构建源代码。在这里,我想使用它与java bean之间的通用映射框架。
Spring Batch部分完全清晰并实现。
当然我可以在java中用硬编码定义它,但出于透明的原因,我必须在java代码之外导出这个映射逻辑。
有谁知道这样的框架?一个存在吗?我找到了Dozer,但我认为我无法在XML中定义一些复杂的映射规则。
答案 0 :(得分:1)
也许。我会用Java Scripting API来做这件事。它允许您加载脚本(JavaScript,Beanshell,Groovy等)并运行它们。您可以将一行输入(或整个模型)放入变量中,然后脚本可以创建新的对象结构。
答案 1 :(得分:0)
尝试使用JMapper Framework。 在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页面了解更多信息。