ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

什么是 SAP Spartacus FacadeFactoryService 中的 Resolver

2021-11-16 16:35:52  阅读:186  来源: 互联网

标签:defer facade Spartacus FacadeFactoryService Proxy resolver injector SAP 加载


这个 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的原创文章,尽在:"汪子熙":

标签:defer,facade,Spartacus,FacadeFactoryService,Proxy,resolver,injector,SAP,加载
来源: https://www.cnblogs.com/sap-jerry/p/15561870.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有