2016-11-12 1 views
0

Ich las viele Beiträge auf SO im Vergleich Jersey und Spring MVC. Es gibt einen Punkt, der interessant scheint: Jersey folgt Jax RS-Standard, während Spring MVC nicht.Spring MVC nicht Jax RS complient: ist es riskant?

Meine Frage ist: Wie kann ich den Jax RS-Standard nicht einhalten, da ich meine Java-App auf einem Tomcat-Server bereitstellen möchte? Gibt es Leistungsprobleme?

Grüße.

+1

Mind Zitat Ihrer Quellen? Ich hatte nie Probleme mit Spring MVC. –

+0

Haben Sie die gegenteilige Frage berücksichtigt: * Was ist das Risiko, dem Jax RS-Standard zu folgen? * – Andreas

+0

@AdamArold Ich habe nie gesagt, dass es Probleme mit Spring MVC geben würde. Ich spreche davon, nicht dem Jax RS-Standard zu folgen? – barton

Antwort

1

Spring muss JAX-RS nicht folgen, da Spring bereits eine eigene Methode zum Beschreiben, Eingeben und Aussetzen von Ressourcen hatte, bevor der Standard erstellt wurde. Sie könnten wahrscheinlich JAX-RS unterstützen, aber die Vorteile wären eher zweifelhaft, da sie unterschiedliche Erwartungen an das zugrundeliegende System haben, und beide können bereits gleichermaßen auf einfachen Servlet-Containern oder vollwertigen JEE-Servern eingesetzt werden . Darüber hinaus ist es dem Kunden einer solchen Anwendung egal, ob dahinter Frühling oder Jersey oder irgendetwas anderes steht.

Wie jemand richtig bemerkt hat, ist die Übernahme von JAX-RS kein Vorteil für sich. Es ist nur so, wenn die umgebenden Systeme ebenfalls JEE sind, z.B. wenn Sie planen, CDI ubiquitär zu verwenden.

Wenn Sie andererseits Spring in den angrenzenden Systemen haben, würden Sie natürlich auch Spring für den REST-Teil verwenden.

Wenn diese REST-App die einzige Sache ist, und keine angrenzenden Systeme zu integrieren existieren, sind beide Möglichkeiten in Ordnung und es gibt keinen guten Grund, das eine oder das andere zu bevorzugen. Ich würde immer noch mit Spring gehen, da sein Ökosystem viel reicher und schneller ist, aber das ist nur meine Meinung.

JAX-RS hat den Vorteil, nativ vom Container unterstützt zu werden, daher wird die resultierende App kleiner, da weniger Abhängigkeiten benötigt werden. Das ist in der Theorie eine gute Sache, aber historisch wechselnde JEE-Server waren schon immer problematisch aufgrund von Unterschieden in proprietären Konfigurationen (Wie definierst du eine Datenquelle?), Zur Verfügung gestellte Bibliotheksversionen (Welche JAX-RS-Implementierung liefert der Server? Version? Was ist, wenn Sie eine neuere Version als das, was der Server hat?) und Classloading-Strategien (wenn Sie eine neuere lib-Version in Ihrer App verpacken, welche wird zuerst geladen und wann?). Während Spring-Anwendungen größer sind, da sie Springs-Bibliotheken enthalten müssen, sind sie viel widerstandsfähiger gegen die oben genannten Probleme. Sie tun alles der Spring-Weg, also welcher Server darunter ist viel weniger interessant. Es klingt albern, aber das Standard-Ding ist oft tatsächlich schwieriger zu portieren als der Nicht-Standard. Das ist natürlich nur meine eigene Erfahrung, und jemand wird mit einem anderen genau hineinspielen.