rest - ¿Todavía necesitamos JacksonFeature.class para los proyectos de Jersey 2.17?
jersey-2.0 (1)
He estado tratando de saber si JacksonFeature.class aún se necesita para Jersey 2.17. No puedo ver ninguna diferencia entre las salidas entre los códigos que JacksonFeature.class está registrado o no.
Luego, bifurqué un código de codingpedia codingpedia , eliminé JacksonFeature.class, actualicé a Spring 4.1.2 y jersey 2.17, actualicé los códigos y la prueba aún pasó.
Así que creé un servicio web muy simple para probar nuevamente este enlace de Github , teniendo en cuenta eliminar todas las partes móviles y seguir funcionando. Entonces, ¿todavía tenemos que registrar JacksonFeature?
Sí, no sé por qué ese tutorial está usando Jersey 2.9, pero para el artefacto jersey-media-json-jackson
, están usando 2.4.1. En general, debe mantener las versiones de Jersey (artefacto relacionado) de la misma. En el proyecto real de Github , el autor cambió esto para usar el ${jersey.version}
(que es 2.14), que tiene más sentido.
Pero para responder a su principal preocupación, a partir de la versión 2.9 el módulo jersey-media-json-jackson
, toma parte en el escaneo de ruta de clases AutoDiscoverable , que involucra el mecanismo Proveedor de Servicios de Java . Puede ver este cambio cambiando entre versiones 2.8 y 2.9 (una versión hacia arriba) de este módulo. Verá en los servicios META-INF/services
, el archivo org.glassfish.jersey.internal.spi.Autodiscoverable
(que enumera la implementación JacksonAutoDiscoverable
), en la versión 2.9 (y superior). Con esto, no es necesario que la característica esté explícitamente configurada, a menos que la función de detección automática esté desactivada (lo que es posible hacer explícitamente).
Y para completar, cuando tiene MOXy en el classpath y no registra explícitamente la función Jackson, se usará MOXy, ya que MOXy es el proveedor predeterminado. Aunque no tenga una dependencia explícita en MOXy, en situaciones como el caso del uso del servidor Glassfish, tiene el artefacto MOXy, en cuyo caso podemos registrar explícitamente la función Jackson, que desactiva automáticamente MOXy, o podemos deshabilitar explícitamente MOXy con la propiedad ServerProperties.MOXY_JSON_FEATURE_DISABLE establecida en true