2020-09-15 02:32发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好,
我是Hybris的新手。 我需要了解如何在hybris中实现填充程序,并有完整的解释。
任何帮助将不胜感激。
谢谢
Anuj,你好
首先,这是一篇介绍填充器的文章: https://help.hybris.com/6.6。 0/hcd/8b937ff886691014815fcd31ff1de47a.html 还有一个简单示例的跟踪页面: https://help.hybris.com/6.6.0/hcd /56749e96d95a41ca8a1298bd8c59edda.html 由于该主题与DTO和转换器紧密相关,因此本文是有关Pest Practices的另一篇文章: https://help.hybris .com/6.6.0/hcd/8c7acd1986691014a5f4b5880d032474.html
通常-填充器和转换器: 它们都提供了从模型到数据传输对象(DTO)的一些交互。
填充人员负责填写 现有DTO中的属性 来自模型的。
转换器负责 将模型完全转换为新模型 DTO。
为避免代码重复:
转换器仅执行DTO创建
然后调用的有序列表 人口实际处理 属性填充。
有2种不同的填充器:
直接填充器-每种类型都有其自己的填充器,仅负责填充直接和"本机"属性。
关系填充器-每个类型都有一个填充器,用于每个采用基本类型并仅填充该关系的关系。 这只是一个"胶水"填充器,因为它仅以典型的"策略"模式调用相关的填充器。
编写填充器时的指南:
您不应在填充器中使用 instanceof 。
instanceof
如果需要根据模型的类型填充一组不同的属性,则应使用2个不同的spring poppers Bean。 然后使用2个不同的spring转换器bean进行选择,或者:
在立面上注入2 不同的转换器,并执行 instanceof 在那里
在控制器中通过注入2 同一外观的实例 实现,但注入了不同的转换器。
您可以使用"代理转换器"。
如果使用多个转换器bean很麻烦,则可以注入一个代理转换器,它将选择正确的bean。 这将轻松注入该策略,而无需重构多层。
您不应该在会话中添加ID以外的任何内容
只有ID应该在会话中。 无论如何,您都将从实体缓存中检索模型。 如果不存在Model,则由于数据例如直接来自外部WebService,因此您可以创建一个Populator,该Populator调用依赖于根对象的对象,然后调用该WebService将远程数据注入DTO中。 >
一个很好的例子是从 CustomerModel 中检索 LoyaltyAmount ,以便能够在店面中显示它。 填充器将称为 LoyaltyAmountCustomerPopulator 。 然后可以使用标准DTO缓存包轻松缓存它。 甚至可以通过某些AOP在高负载时将其禁用。
CustomerModel
LoyaltyAmount
LoyaltyAmountCustomerPopulator
希望这会有所帮助。 最好的问候,
感谢雅库布(Jakub)您的迅速反应。
最多设置5个标签!
Anuj,你好
首先,这是一篇介绍填充器的文章: https://help.hybris.com/6.6。 0/hcd/8b937ff886691014815fcd31ff1de47a.html 还有一个简单示例的跟踪页面: https://help.hybris.com/6.6.0/hcd /56749e96d95a41ca8a1298bd8c59edda.html 由于该主题与DTO和转换器紧密相关,因此本文是有关Pest Practices的另一篇文章: https://help.hybris .com/6.6.0/hcd/8c7acd1986691014a5f4b5880d032474.html
通常-填充器和转换器:
它们都提供了从模型到数据传输对象(DTO)的一些交互。
填充人员负责填写 现有DTO中的属性 来自模型的。
转换器负责 将模型完全转换为新模型 DTO。
为避免代码重复:
转换器仅执行DTO创建
然后调用的有序列表 人口实际处理 属性填充。
有2种不同的填充器:
直接填充器-每种类型都有其自己的填充器,仅负责填充直接和"本机"属性。
关系填充器-每个类型都有一个填充器,用于每个采用基本类型并仅填充该关系的关系。 这只是一个"胶水"填充器,因为它仅以典型的"策略"模式调用相关的填充器。
编写填充器时的指南:
您不应在填充器中使用
instanceof
。如果需要根据模型的类型填充一组不同的属性,则应使用2个不同的spring poppers Bean。
然后使用2个不同的spring转换器bean进行选择,或者:
在立面上注入2 不同的转换器,并执行
instanceof
在那里在控制器中通过注入2 同一外观的实例 实现,但注入了不同的转换器。
您可以使用"代理转换器"。
如果使用多个转换器bean很麻烦,则可以注入一个代理转换器,它将选择正确的bean。
这将轻松注入该策略,而无需重构多层。
您不应该在会话中添加ID以外的任何内容
只有ID应该在会话中。 无论如何,您都将从实体缓存中检索模型。 如果不存在Model,则由于数据例如直接来自外部WebService,因此您可以创建一个Populator,该Populator调用依赖于根对象的对象,然后调用该WebService将远程数据注入DTO中。 >
一个很好的例子是从
CustomerModel
中检索LoyaltyAmount
,以便能够在店面中显示它。 填充器将称为LoyaltyAmountCustomerPopulator
。 然后可以使用标准DTO缓存包轻松缓存它。 甚至可以通过某些AOP在高负载时将其禁用。希望这会有所帮助。
最好的问候,
感谢雅库布(Jakub)您的迅速反应。
一周热门 更多>