rest - Jersey 2.17 项目还需要 JacksonFeature.class 吗?

标签 rest jersey jackson jersey-2.0

我一直想知道 Jersey 2.17 是否仍然需要 JacksonFeature.class。我看不出 JacksonFeature.class 是否注册的代码之间的输出之间有任何区别。

然后,我从 codingpedia codingpedia fork 了一个代码。 ,移除 JacksonFeature.class,升级到 Spring 4.1.2 和 jersey 2.17,更新代码,测试仍然通过。

所以我创建了一个非常简单的 Web 服务来再次测试 github link ,请记住卸下所有事件部件并且仍然可以工作。那么我们还需要注册 JacksonFeature 吗?

最佳答案

是的,我不知道他们为什么使用 Jersey 2.9 的教程,但是对于 jersey-media-json-jackson神器,他们使用的是2.4.1。通常,您应该保持 Jersey(相关工件)版本相同。在实际Github Project ,作者将其更改为使用项目的${jersey.version} (即 2.14),这更有意义。

但要回答您的主要问题,从版本 2.9 开始,jersey-media-json-jackson模块,参与AutoDiscoverable classpath scanning ,其中涉及Java's Service Provider mechanism .您可以通过来回切换到此模块的 2.8 版本和 2.9(更高版本)版本来查看此更改。您将在 META-INF/services 中看到,文件org.glassfish.jersey.internal.spi.Autodiscoverable (其中列出了 JacksonAutoDiscoverable 实现),在 2.9 版(及更高版本)中。这样,不需要显式配置该功能,除非禁用自动发现功能(可以显式执行)。

为了完整起见,当您在类路径上有 MOXy 并且您没有显式注册 Jackson 功能时,将使用 MOXy,因为 MOXy 是默认提供程序。即使您可能没有对 MOXy 的显式依赖,但在使用 Glassfish 服务器的情况下,它具有 MOXy 工件,在这种情况下,我们可以显式注册自动禁用 MOXy 的 Jackson 功能,或者我们可以显式禁用MOXy 与属性 ServerProperties.MOXY_JSON_FEATURE_DISABLE设置为真

关于rest - Jersey 2.17 项目还需要 JacksonFeature.class 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247251/

相关文章:

rest - REST MarkLogic 中的自定义搜索结果

django - django-tastypie 和 djangorestframework 有什么区别?

javascript - 如何使用 jersey/jackson 生成多种类型的 json 数组

java - 尝试使用 Jersey 创建 Restful WebService 时出错

java - Jackson ObjectMapper 使用自定义序列化器和反序列化器

java - 类和字段级别@JsonView注释和对象映射器

python - 使用 Zenpy 通过列表迭代 API 时遇到问题

thread-safety - Jersey 的@Context HttpServletRequest 范围

java - 以数据值作为键的类似 map 的序列化

javascript - 是否可以使用仅限客户端的单页应用程序实现 SEO?