什么是 SAP Spartacus FacadeFactoryService 中的 Resolver
這個 resolver 只針對 Proxy Facade,根據 feature 名稱和 FacadeClass,獲取對應的 resolver. 該 resolver 知道怎樣將函數調用,投遞到該 facade 的具體實現類去。
featureName:cartQuickOrderCore
最后得到實際值:cartQuickOrder
返回 resolver 的邏輯放在一個 defer 函數塊里了:
當應用程序開始調用 facade 的方法時,被投遞到代理類:
此時 resolver$ 包含的一大段在 defer 里的邏輯始終未得到執行。
所以,從語義上說,resolver 解析出來的對象,就是該 facade 真實的實現類?這個 connect 應該相當于 subscribe 方法。
果然,connect 方法會觸發 defer 塊內的函數調用:
觸發 core module 延遲加載:
加載完 QuickOrderModule 之后,從 ModuleRef 里拿到 injector,再調用這個 module 的 injector,拿到 facadeClass 對應的實現類:
大功告成,拿到實現類 QuickOrderService 了:
此時就可以調用該實現類的方法了:
總結
Resolver 負責觸發 Proxy Facade 對應的具體實現類的延遲加載,加載完成后,從 Module Ref 里拿到 injector,再使用 injector 拿到 Proxy Facade 的具體實現類的實例。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的什么是 SAP Spartacus FacadeFactoryService 中的 Resolver的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 电商云 Spartacus UI
- 下一篇: 新股破发后面会涨吗