hybris populators and converters 概念及其关系

Posted

技术标签:

【中文标题】hybris populators and converters 概念及其关系【英文标题】:hybris populators and converters concept and their relationship 【发布时间】:2016-03-08 03:08:21 【问题描述】:

有人能解释一下 Hybris 中使用的 converterspopulators 的概念吗?在 Hybris 商务加速器中使用 AddOns 后,我正在研究 Hybris 中 AddOns 的概念,但其中一点是“您可以将填充器插入现有转换器而无需重新定义它们”?所以我认为最好先了解这些概念。

【问题讨论】:

简而言之,转换器是填充器的集合,其中每个填充器扮演单独的角色来填充 DTO 的一部分。 Hybris 强烈建议您不要编写具体的转换器(没有填充器)。至少一个填充器应与转换器绑定以填充其 DTO。而且它很容易即插即用。 【参考方案1】:

简而言之,转换器用于从(大部分)模型对象中创建数据对象 (DTO),而填充器用于填充 dto。

您会在此处找到关于版本 5 的两个概念的非常好的文档: https://wiki.hybris.com/display/release5/Converters+and+Populators

这里是版本 6: https://help.hybris.com/6.0.0/hcd/8b937ff886691014815fcd31ff1de47a.html

(如果您还没有 wiki 访问权限,您应该获取它,因为 wiki 和https://experts.hybris.com 的专家论坛是获得大量答案的两个重要资源)。

干杯!

【讨论】:

【参考方案2】:

Hybris 转换器由特定类型的填充器列表组成,这允许您在为特定类型创建填充器的方式中保持一定的模块化,而不必为单个填充器承担太多责任。

除此之外,您可以使用一个可配置的转换器,您可以在其中定义允许执行某些填充器的常量,例如,您不想填充所有字段的产品列表产品。

最后,我还建议查看 hybris 帮助页面并反编译 hybris 源代码,以便更好地了解它们的实现。

希望对您有所帮助!

【讨论】:

【参考方案3】:

您应该首先为填充器创建对象,而转换器创建目标对象然后自动填充它。

//converter example   
Target target = targetConverter.convert(source);
List<Target> targetList = sourceList.toStream().map(s->targetConverter.convert(s));

//Populator example    
Target target = new Target();    
targetPopulator.populate(source, target);

【讨论】:

以上是关于hybris populators and converters 概念及其关系的主要内容,如果未能解决你的问题,请参考以下文章

SAP Hybris的Convertor, Populator, Facade和DTO这几个概念是如何协同工作的

CRM WebUI and Hybris的Product页面标题实现

CRM WebUI and Hybris的Product页面标题实现

BSP tag in CRM and JSP tag in Hybris

Population Genetics and Demography Unite Ecology and Evolution

Internationalization(i18n) support in SAP CRM,UI5 and Hybris