resteasy-links的研究(四)
这篇文章分析一下拆分后的ObjectLinksProvider
和LinksInjector
的工作机制。
之前的版本,在LinkDecorator
里面调用RESTUtils
的逻辑如下:
现在的逻辑则是把这个工作拆分到两个class里面:
实际上它们所完成的工作都是一样的,但是这样拆分之后内部的逻辑更加清晰了。变更后的逻辑如下:
可以看到先创建了一个LinksInjector
的实例,然后创建了一个ObjectLinksProvider
的实例。
创建后,在injector的inject()
方法里调用了provider
实例的getLinks()
方法。
先看一下ObjectLinksProvider
的getLinks()
方法:
可以看到上面这个class的逻辑是创建并生成RESTServiceDiscovery
的实例。生成的过程主要使用processLinkResource()
方法。
这个processLinkResource()
方法是从之前的RESTUtils
提取出来的,不在本篇文章展开分析,后续再写文章进行具体分析。
接下来继续看,这个RESTServiceDiscovery
的实例创建完成后,在injector
的inject()
方法里被使用。因此再看一下LinksInjector
的inject()
方法的逻辑:
可以看到这个逻辑内部是把具体的信息都注入到RESTServiceDiscovery
的实例里面去。通过这样的过程,便完成了对于RESTServiceDiscovery
的实际注入过程。
因此可以看到对RESTServiceDiscovery
实例的数据注入是拆开在provider和injector两部分完成的。后续再开文章具体展开分析这两部分都各自做了哪些工作。
本文就分析到这里。