RestasyClientBuilder的build()过程,以及注入tracingLogger的方式

RESTEasy提供两种创建client的方式:

RESTEasy JAX-RS

文档中介绍的两种方式如下:

实际上JAX-RS标准的ClientBuilderbuild()方法是依赖于具体实现的:

因此查看RestasyClientBuilder就好:

这里的config的类型是ClientConfiguration

ClientConfiguration config = new ClientConfiguration(getProviderFactory());

build()最后的逻辑如下:

看到config和其它参数一起被传入createRestesayClient(...)方法:

可以看到所有的参数最终传入ResteasyClient的constructor。

有了ResteasyClient,就可以进行客户端的call:

那么我们应该是让tracing logger跟着invocation来走的。从上面看到,client进行请求的时候,是创建web target,而Resteasy当中实际的实现是ClientWebTarget

ClientWebTarget当中,重点是构架ClientInvocationBuilder

而invocation builder则是构建invocation来负责实际的request:

以下是这些classes的整体设计:

综上所述,得出结论如下:

具体的实现以最终代码为准。