如何覆盖通用 ODATA 扩展处理功能

How to overwrite generic ODATA expand handling functionality

我们目前正在处理我们提供的 OData 接口的性能问题,因为 UI5 发出了一个附加了多个扩展路径的读取请求。由于框架对请求的一般处理,这导致每个扩展选项需要额外处理,我们需要防止这种情况发生。

阅读有关此主题的博客,似乎有一种方法可以以某种方式覆盖通用处理:

https://blogs.sap.com/2018/03/19/sap-cloud-platform-sdk-for-service-development-create-odata-service-7-more-navigation-read-create-expand-sqo/

In this case it is us who need to decide if we can afford to rely on the FWK-functionality. Of course, such generic support cannot be performant. But for small amount of data it is just nice to get it for free. Stay tuned to learn how to overwrite such generic FWK-functionality with own specific implementation.

但是,没有关于此的进一步博客 post 并通过框架查看,我覆盖它的唯一想法是配置和使用自己的 com.sap.gateway.core.api.provider.data.IDataProvider 实现来处理请求一种自定义方式,尽管这将是一个巨大的解决方法。

所以问题是是否有一些更精简或更简单的方法来覆盖我错过的这个功能?

更新: 我更新为创建自定义数据提供程序并在 servlet 初始化后将其注册到 RuntimeDelegate。然后,此自定义数据提供程序将检查映射方法处理程序上的自定义注释,以查看是否应处理扩展。如果不是,它只会读取实体,但不会执行通用扩展读取。这或多或少可以正常工作,但当然缺少一种方法来传递要在 ReadRequest 中扩展的属性。到目前为止,只有静态实现可以解决我们的性能问题,但如果有另一个更好的解决方案,我很乐意得到提示...

在撰写本文时,目前没有更好的方法。