wake-up-neo.com

Spring 4 vs Jersey für REST Web Services

Wir planen eine neue Anwendung mit der Version 4.0.6. Wir verwenden Controller, die "XML" oder "JSON" zurückgeben können. Im vorherigen Projekt haben wir Jersey mit Spring erfolgreich für REST Unterstützung mit JAX-RS API implementiert, aber nachdem wir einige Artikel und Vorschläge von Senioren gelesen hatten, sagten sie, dass Spring ziemlich gute Ergebnisse liefert REST Unterstützung.

Einige der Punkte, die mich wirklich verwirrten, wenn ich Spring REST ohne JAX-RS und Jersey unterstütze, sind:

  1. Wie wird in Spring MVC das Marshalling und das Marshalling aufgehoben?

  2. Ist es für das Marshalling oder Unmarshalling notwendig, Jax-Rs zu verwenden.

  3. Wenn Marshaling und Unmarshaling bis zum Frühjahr automatisch durchgeführt werden, woher weiß es dann über xmlRootElements Bescheid.

Ich bin immer noch verwirrt, wenn der Frühling eine sehr gute Unterstützung für REST= nachweist. Warum entscheiden sich die Leute dann immer noch für Jersey für REST?.

Wenn ich etwas falsches gesagt habe, ignoriere es bitte. Erklärung mit Beispiel ist wirklich hilfreich.

Danke im Voraus!!

116
Robin Saxena

Ich würde sagen, dass sowohl Jersey als auch Spring MVC großartig sind - jedes Projekt hat seinen eigenen Stil und seine eigenen Stärken. Auf jeden Fall ist Stack Overflow nicht der richtige Ort, um subjektive Vergleiche anzustellen (Ihre Frage würde sich schnell schließen). Wenn Sie Spring bereits für alles andere verwenden und JAX-RS nicht verwenden müssen , ist Spring MVC absolut sinnvoll.

In Bezug auf Funktionen wie (Un-) Marshalling ist JAX-RS schließlich nur eine Spezifikation - andere Bibliotheken können ähnliche Funktionen anbieten, ohne dass dieselbe API implementiert wird.

  1. Anstelle von MessageBodyReaders /Writers verwendet Spring MVC HttpMessageConverters , um das (Un-) Marshalling zu verwalten REST Ressourcen. Spring MVC verwaltet die Inhaltsaushandlung und wählt aus der beste verfügbare Konverter für den Job (Sie können Methoden mit Anmerkungen versehen, um anzugeben, welchen Medientyp sie produzieren/verbrauchen).

  2. Nein, es ist nicht erforderlich, JAX-RS zu verwenden, um Ressourcen zu (un) marshallen. Tatsächlich verwenden JAX-RS-Implementierungen und Spring MVC Serialisierungsbibliotheken von Drittanbietern, um die Arbeit zu erledigen. Es ist also nicht an einen bestimmten Standard gebunden.

  3. In der Version 4.0.6 unterstützt Spring viele HttpMessageConverters , Jackson für JSON, JAXB für XML und viele andere. Spring 4.1.0 hat weitere HttpMessageConverters hinzugefügt:

Um Ihren letzten Punkt zu beantworten, @XmlRootElement ist eine JAXB-Annotation und nicht Teil von JAX-RS. Feder unterstützt JAXB .

Für ein vollständigeres Beispiel mit REST im Frühjahr, lesen Sie diese Kurzanleitung (Sie erhalten ein vollständiges Beispiel in 10-15 Minuten).

Auch hier ist der letzte Teil Ihrer Frage ziemlich subjektiv - es gibt viele beliebte Lösungen für das Erstellen von REST Services in der JVM, nicht nur Jersey und Spring (Dropwizard, Play! Framework usw.).

119
Brian Clozel

Die Unterstützung für AFAIK Spring REST basiert auf Spring MVC und seiner nicht JAX-RS-Implementierung, während Jersey die JAX-RS-Spezifikation implementiert hat. Diejenigen, die Spring (Core, AOP oder MVC) in ihrem Projekt haben, wählen Spring ReST Unterstützung über JAX-RS-Implementierer.

Ich empfehle Jersey als ausgereift, implementiert JAX-RS und ist einfach zu bedienen.

22
VGaur