Spring 4 vs Jersey for REST web services

前端 未结 2 1833
半阙折子戏
半阙折子戏 2020-12-12 09:48

We are planning to make a new application with spring 4.0.6 version. We use controller that can return \"XML\" or \"JSON\". In the previous project we have successfully imp

2条回答
  •  有刺的猬
    2020-12-12 10:22

    I'd say both Jersey and Spring MVC are great - each project has its own style and strengths. Anyway, Stack Overflow is not the right place for asking subjective comparisons (your question would be closed quite quickly). If you're already using Spring for everything else and are not required to use JAX-RS, then Spring MVC makes total sense.

    Regarding features like (un)marshalling, JAX-RS is just a spec after all - other libraries can offer similar features without implementing the same API.

    1. Instead of MessageBodyReaders/Writers, Spring MVC is using HttpMessageConverters to handle (un)marshalling REST resources. Spring MVC handles content negotiation and chooses the best available converter for the job (you can annotate methods to hint at what media type they produce/consume).

    2. No, it's not necessary to use JAX-RS to (un)marshall resources. In fact, JAX-RS implementations and Spring MVC use third party serialization libraries to do the job; so it's not tied to a particular standard.

    3. In its 4.0.6 version, Spring supports many HttpMessageConverters, with Jackson for JSON, JAXB for XML and many others. Spring 4.1.0 added more HttpMessageConverters:

      • Jackson is now available for both JSON and XML
      • Google Protobuf
      • Gson for JSON, as an alternative to Jackson

    To answer your last point, @XmlRootElement is a JAXB annotation and is not part of JAX-RS. Spring supports JAXB.

    For a more complete example with REST in Spring, check out this getting started guide (you'll get a complete example running in 10-15 minutes).

    Again the last part of your question is quite subjective - there are many popular solutions for building REST services in the JVM, not just Jersey and Spring (Dropwizard, Play! Framework, etc).

提交回复
热议问题