一段时间以前,我的同事遇到了一个问题,该问题需要在假装呼叫中使用自定义URL;通常没有这种需求;毕竟,使用它。需要自定义定制URL的情况。
但是有特殊的。例如,当我们遇到场景时,我们需要致电每个商人。
尽管可以使用本机甚至定制的实现,但必须通过写作方式代替这些解决方案。
它旨在使用现有的实现。毕竟,本机假装实际上支持该功能,并且仅在此基础上包装。
您只需要在接口语句中添加一个参数,以便您可以在每个呼叫中传递不同的动态目的。
这个想法很简单,但事实并非如此。伪代码如下:
执行后,将引发负载平衡的异常:
这个例外也可以理解,也就是说,我找不到github服务。毕竟,找不到它不是内部注册服务是合理的。
但是,根据官方介绍,只要在接口中声明接口,就可以自定义。同时,我还使用本地假装对其进行测试。这确实没有问题。
问题只能放在包装上;同事搜索解决此问题后,在网上发现了一个博客。
https://www.cnblogs.com/sei-tera/p/14386188.html
根据文章的确,URL参数同时值得,但原因是未知的。
基于打破砂锅的精神要求结束,我个人想知道如何处理它。只要URL值得,这就是一个黑匣子,并且在官方注释中没有对这种情况的特殊解释。
因此,我将从源代码中找到答案。
由于URL值可以正常运行,因此必须在操作过程中获得。
但是,我没有找到源代码中使用的URL的应用程序,也没有在单个测试之外找到任何应用程序,这表明该函数未直接调用源代码中的函数以获取值。
但是该注释将始终使用,因此我再次检查此注释的使用。
最终在这里找到了使用痕迹。
在此处检查源代码时,还有一些提示。例如,如果我们直接查询,则默认查询范围的想法是整个项目和所有依赖库,并且会有许多干扰信息。
例如,我只需要查看项目的源代码,因此我不需要单独阅读这些内容。因此,您可以在查询时过滤它,以使干扰信息要少得多。
左侧工具栏上有许多过滤条件,您可以自己学习。
从源代码中阅读后,您会发现中间的所有数据都一对一使用。最后,您会发现此URL写入中间的URL成员变量中。
查看您在哪里使用此URL了解背后的原理。
这是一个断点,发现当URL为空时,它将返回一个从注册中心获得的客户端,并且在有价值的情况下将获得默认客户端,以便负载平衡。不会被带到负载平衡的右边。
因此,如果我们想在OpenFeign中使用动态URL,无论它是什么,我们都必须使@Feign值的URL有价值。
现在我已经看到了这一点,我也很好奇假装如何使用指定的URL,只要有URI参数?
在这里,我们还分享了阅读源代码的提示。如果我们遵循该程序的想法,那将是非常耗时的。毕竟,这种成熟库的代码并不小。
在这里,我们可以从官方文档中知道,只要您在接口参数中使用它,您就会遵循自定义URL,因此,只要我们在源代码中找到它,我们就可以知道关键源代码。
毕竟,没有使用太多场景。
因此,结果只有在这个地方的全局搜索中才能找到取决于整体搜索的地方。实际上没有很多,只使用了两个。
结合使用方案,猜测很高的可能性是确定参数中是否存在这种条件,还是URL对象;简而言之,我们首先在这两个文件中搜索了这样的关键字,请记住检查对接。它是确定参数中是否有此类,并记录此索引的位置。
据推测,最终信息将通过此索引位置阅读。
最终,通过使用此索引来查询核心源代码。如果您有价值,请以URI中指定为URI的地址。
该问题背后的原则已经进行了分析。
实际上,本文的重点是分析和阅读源代码的一些技巧,尤其是在阅读相关代码时不得在详细信息中跟踪,因为通话链通常很长,而且您会头晕目眩,而不会注意它。您只需要知道如何处理核心和关键源代码即可。
最后,解决开放式处理动态URL的解决方案确实是一个典型的场景,但问题是我们不知道该协议的URL值得。
因此,我还提到了一个感兴趣的朋友也可以检查:
https://github.com/spring-cloud/spring-cloud-pull/713
原始:https://juejin.cn/post/7100863261142155294