覆盖MediaModel的getDownloadUrl

2020-09-27 04:23发布

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

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


您好,专家,我们在core-items.xml中有一个属性,名为downloadURL,它属于Media类型。 当我们需要操纵该属性的返回值时,我们已经使用了方面。 但是现在,我们遇到了一些性能问题。 因此,我们尝试摆脱aop的使用。 我想,由于不可写的属性,我没有机会使用拦截器。 在这种情况下,您会建议我什么做法? 谢谢

  
                  <自定义属性>
                      
                           java.lang.Boolean.FALSE 
                      
                  
                  
                  <修饰符read =" true" write =" false"可移动=" true" search =" false"可选=" true"/>
                  <型号>
                      
                      
                  
              

  

具有方面的解决方案(现在已存在于系统中):代码是我要从aop中覆盖的内容:(目前在方面类中)

  @Around(" execution(public * de.hybris.platform.core.model.media.MediaModel.getDownloadURL(..))")
  public String getDownloadUrlByAspect(final ProceedingJoinPoint pjp)抛出Throwable
  {
      最终的LocalMediaWebURLStrategy localMediaWebURLStrategy = Registry.getApplicationContext()
              .getBean(LocalMediaWebURLStrategy.class);

      最终的MediaStorageConfigService mediaStorageConfigService = Registry.getApplicationContext()
              .getBean(MediaStorageConfigService.class);

      MediaModel mediaModel =(MediaModel)pjp.getThis();

      MediaStorageConfigService.MediaFolderConfig config = mediaStorageConfigService
              .getConfigForFolder(mediaModel.getFolder()。getQualifier());

      final String downloadURL = localMediaWebURLStrategy.getDownloadUrlForMedia(config,new ModelMediaSource(mediaModel));

      LogMF.debug(LOG,"媒体的新媒体下载URL为{0}",新的Object []
      {downloadURL});

      返回downloadURL;
  }
  

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

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


您好,专家,我们在core-items.xml中有一个属性,名为downloadURL,它属于Media类型。 当我们需要操纵该属性的返回值时,我们已经使用了方面。 但是现在,我们遇到了一些性能问题。 因此,我们尝试摆脱aop的使用。 我想,由于不可写的属性,我没有机会使用拦截器。 在这种情况下,您会建议我什么做法? 谢谢

  
                  <自定义属性>
                      
                           java.lang.Boolean.FALSE 
                      
                  
                  
                  <修饰符read =" true" write =" false"可移动=" true" search =" false"可选=" true"/>
                  <型号>
                      
                      
                  
              

  

具有方面的解决方案(现在已存在于系统中):代码是我要从aop中覆盖的内容:(目前在方面类中)

  @Around(" execution(public * de.hybris.platform.core.model.media.MediaModel.getDownloadURL(..))")
  public String getDownloadUrlByAspect(final ProceedingJoinPoint pjp)抛出Throwable
  {
      最终的LocalMediaWebURLStrategy localMediaWebURLStrategy = Registry.getApplicationContext()
              .getBean(LocalMediaWebURLStrategy.class);

      最终的MediaStorageConfigService mediaStorageConfigService = Registry.getApplicationContext()
              .getBean(MediaStorageConfigService.class);

      MediaModel mediaModel =(MediaModel)pjp.getThis();

      MediaStorageConfigService.MediaFolderConfig config = mediaStorageConfigService
              .getConfigForFolder(mediaModel.getFolder()。getQualifier());

      final String downloadURL = localMediaWebURLStrategy.getDownloadUrlForMedia(config,new ModelMediaSource(mediaModel));

      LogMF.debug(LOG,"媒体的新媒体下载URL为{0}",新的Object []
      {downloadURL});

      返回downloadURL;
  }
  
付费偷看设置
发送
4条回答
bbpeas
1楼-- · 2020-09-27 05:06

我将更改默认的媒体策略。

添加此属性: media.default.url.strategy = yourMediaStrategyBean

创建一个扩展LocalMediaWebURLStrategy的类并覆盖以下方法:

公共字符串getDownloadUrlForMedia(MediaFolderConfig配置,MediaSource mediaSource)

Cikesha
2楼-- · 2020-09-27 05:07

Sebaastien,谢谢您的回答。 但是我想我不明白你的意思。 因为,我关注的不是直接战略。 我只想覆盖mediaModel.getDownloadURL方法而不是mediaStrategy。 也许我没有看对地方。 我想getDownloadURL方法不涉及策略代码或缺少某些内容。

DafaDDDa
3楼-- · 2020-09-27 05:18

嗨,穆斯塔法,

只需在上面具有的XML中将 write 属性更改为 write =" true" ,然后构建并运行平台。 这将在类中生成 setDownloadURL(String downloadURL)方法。

缺点是,当您迁移到更高的hybris版本时,对于补丁程序或主要发行版,您每次都需要应用此更改。 如果您创建一个单元测试来检查 setDownloadURL(...)方法是否存在,并放入详细的AssertionError消息以提醒您如何进行更新。

我希望这会有所帮助,
卢克

天桥码农
4楼-- · 2020-09-27 05:14

我们可以使用redeclare属性在自定义扩展中启用写入选项吗?

一周热门 更多>