resteasy-links的研究(四)

这篇文章分析一下拆分后的ObjectLinksProviderLinksInjector的工作机制。

之前的版本,在LinkDecorator里面调用RESTUtils的逻辑如下:

现在的逻辑则是把这个工作拆分到两个class里面:

实际上它们所完成的工作都是一样的,但是这样拆分之后内部的逻辑更加清晰了。变更后的逻辑如下:

可以看到先创建了一个LinksInjector的实例,然后创建了一个ObjectLinksProvider的实例。

创建后,在injector的inject()方法里调用了provider实例的getLinks()方法。

先看一下ObjectLinksProvidergetLinks()方法:

可以看到上面这个class的逻辑是创建并生成RESTServiceDiscovery的实例。生成的过程主要使用processLinkResource()方法。

这个processLinkResource()方法是从之前的RESTUtils提取出来的,不在本篇文章展开分析,后续再写文章进行具体分析。

接下来继续看,这个RESTServiceDiscovery的实例创建完成后,在injectorinject()方法里被使用。因此再看一下LinksInjectorinject()方法的逻辑:

可以看到这个逻辑内部是把具体的信息都注入到RESTServiceDiscovery的实例里面去。通过这样的过程,便完成了对于RESTServiceDiscovery的实际注入过程。

因此可以看到对RESTServiceDiscovery实例的数据注入是拆开在provider和injector两部分完成的。后续再开文章具体展开分析这两部分都各自做了哪些工作。

本文就分析到这里。

Powered by Jekyll and Theme by solid