如何覆盖Europe1PriceFactory

2020-09-04 08:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我想以这种方式自定义Eu...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我想以这种方式自定义Europe1PriceFactory,而不再希望使用DefaultPDTRowsQueryBuilder。

为此,我创建了一个新的扩展,其managersuperclass是:

  managersuperclass =" de.hybris.platform.europe1.jalo.Europe1PriceFactory"

  

然后,我从新创建的扩展的coremodule中编辑了TZRpricefactoryManager类(请参阅:)

  

  

要覆盖getPDTRowsQueryBuilderFor方法以返回我的自定义类,并告诉hybris使用新的扩展名(local.properties)

  default.pricefactory = tzrpricefactory

  

到这一步为止,它工作正常,但是现在我遇到了问题,即启动服务器后,属性restoreChannelStrategy为null。 在状态注册过程中,我可以看到已调用setter,从而设置了属性。 但是当我使用新的PriceFactory进行cronjob时,该属性再次为null。

要设置属性,我在新扩展的spring.xml中添加了以下行:

  
          <属性名称=" retrieveChannelStrategy" ref =" retrieveChannelStrategy"/>
      

  

谁能告诉我我做错了什么以及如何正确地注入财产?

我正在使用Hybris 5.7.0.3

谢谢

5条回答
Doze时光
2020-09-04 09:04

嗨,Paul,您可以在管理器中创建一个函数,该函数将在需要时为您提供值,而无需为管理器声明一个bean来注入该属性。 :

 私有RetrieveChannelStrategy getRetrieveChannelStrategy(){
      返回(RetrieveChannelStrategy)Registry.getApplicationContext()。getBean(" retrieveChannelStrategy");
  }
  

然后,而不是调用

  PriceRowChannel channel = this.retrieveChannelStrategy.getChannel(ctx);
  

您可以打电话

  PriceRowChannel channel = getRetrieveChannelStrategy()。getChannel(ctx);
  

对您来说应该很好。

Juan

一周热门 更多>