在我们的 Jersey 项目中,我们使用了 2 个 json 提供程序,Moxy 和 Jackson。我想知道哪个提供商被用来反序列化我的有效负载,无论是 Moxy 还是 Jackosn。有什么办法可以找到吗?
最佳答案
有方法可以找到它,但没必要,因为通常会使用相同的方法。 Jersey (2.x) 的设置方式是 MOXy (jersey-media-moxy
) 是默认提供程序。如果您在类路径中同时拥有两者,没有任何进一步的配置,将使用 MOXy。
有几种方法可以禁用 MOXy。显式注册 JacksonFeature
(jersey-media-json-jackson
附带),或设置属性 ServerProperties.MOXY_JSON_FEATURE_DISABLE
为 true
但为了完整起见,我可以想到几种方法来确定正在使用的是哪种方法
- 触发异常并在映射器中处理它。检查堆栈跟踪。 (我知道不是很优雅)
- 为
ObjectMapper
编写一个ContextResolver
。如果使用 Jackson,将调用getContext
方法(只需添加一个 s.o.p)。 See here - 您可以通过可注入(inject)的
Providers
接口(interface)检索提供者。 See here
可能还有其他方法,但正如我所说,这似乎并不是必需的。你应该已经知道了。
关于java - 如何找到 Jersey 使用的反序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222240/