克隆 hybris bean 的最佳方法是啥?
Posted
技术标签:
【中文标题】克隆 hybris bean 的最佳方法是啥?【英文标题】:the best way to clone hybris beans?克隆 hybris bean 的最佳方法是什么? 【发布时间】:2021-06-29 06:10:03 【问题描述】:我需要克隆 hybris bean“ProductData”,但我无法从 Hybris 找到有助于解决此问题的 OOTB。
而且由于 hybris bean 没有实现 Cloneable 并且没有构造函数,在我看来只剩下两种方法,或者通过创建需要大量开发的自定义克隆方法,或者通过序列化/反序列化.
还有其他方法吗? Hybris 是否为此提供了一些 OOTB 的东西?否则序列化/反序列化是一种很好的方法(就性能而言),因为我可以使用来自 apache 的 SerializationUtils?
【问题讨论】:
您不能从原始产品中重新填充一个新的productData
吗?因为除了为此创建自定义克隆服务之外,我看不到其他方法,您可以通过反射和迭代productData
属性来做到这一点,请参阅:***.com/questions/7746158/…,并使用modelService.clone
克隆 itemModel 类型的属性
是的,我可以为此创建一个自定义人口,我只是想知道 hybris 是否有什么可以帮助解决这个问题,但似乎只有你提到的 modelService.clone 并且它是对于模型。您如何看待 SerializationUtils.clone 是一个好方法,因为它不需要自定义开发?
是的,如果您只需要浅克隆,也可以使用 BeanUtils:commons.apache.org/proper/commons-beanutils/apidocs/org/apache/…
【参考方案1】:
根据你使用的 hybris 版本,你也可以使用 ma.glasnost.orika.MapperFactory 像:
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
MapperFacade mapper = mapperFactory.getMapperFacade();
ProductData clonedData = mapper.map(productData, ProductData.class);
【讨论】:
【参考方案2】:您好,您可以直接在控制器或服务中注入 dataMapper bean。
import de.hybris.platform.webservicescommons.mapping.DataMapper;
@Autowired
private DataMapper dataMapper;
dataMapper.map(e, ProductData.class)
【讨论】:
以上是关于克隆 hybris bean 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章