Ich habe mit dem Unterschied zwischen JAX-RS (naja, vielleicht sollte Jersey zum Vergleich verwendet werden, da JAX-RS nur eine Spezifikation ist) und Spring for Restful-Diensten verwechselt . Ich habe versucht, online nach weiteren Informationen zu suchen, und es wurde verwirrender. Mein Unternehmen verwendet Spring MVC, um Restful APIs zu entwickeln
Der verwirrende Teil ist, JAX-RS steht für Java API für RESTful Web Services . Im Frühjahr verwende ich auch Java, um RESTful Web Services zu entwickeln, sodass ich die Unterschiede nicht wirklich verstehe. Entspricht Spring den JAX-RS-Spezifikationen?
Nach dem, was ich bis jetzt weiß:
- JAX-RS ist eine Blaupause / Spezifikation, es hat Jersey, RESTeasy usw. als Implementierungen.
spring-mvc
jersey
jax-rs
Hades
quelle
quelle
spring-webmvc
Modul bereitgestellt , das auch den Model-View-Controller des Spring bereitstellt.Antworten:
JAX-RS
JAX-RS ist eine Spezifikation zur Implementierung von REST-Webdiensten in Java, die derzeit vom JSR-370 definiert wird . Es ist Teil der Java EE-Technologien , die derzeit im JSR 366 definiert sind .
Jersey (im Lieferumfang von GlassFish und Payara enthalten) ist die JAX-RS-Referenzimplementierung. Es gibt jedoch auch andere Implementierungen wie RESTEasy ( im Lieferumfang von JBoss EAP und WildFly enthalten) und Apache CXF (im Lieferumfang von TomEE und WebSphere enthalten).
Frühlingsrahmen
Das Spring Framework ist ein vollständiges Framework , mit dem Sie Java-Unternehmensanwendungen erstellen können. Die REST-Funktionen werden vom Spring MVC- Modul bereitgestellt (dasselbe Modul, das Funktionen für die Modellansichtssteuerung bereitstellt ). Es ist keine JAX-RS-Implementierung und kann als Spring-Alternative zum JAX-RS-Standard angesehen werden.
Das Spring-Ökosystem bietet auch eine breite Palette von Projekten zum Erstellen von Unternehmensanwendungen, darunter Persistenz, Sicherheit, Integration in soziale Netzwerke, Stapelverarbeitung usw.
Beispiele
Betrachten Sie den folgenden Ressourcencontroller, der die JAX-RS-API verwendet:
Die entsprechende Implementierung unter Verwendung der Spring MVC-API wäre:
Verwenden von Spring Boot und Jersey
Spring Boot bietet das
spring-boot-starter-jersey
Modul, mit dem Sie das JAX-RS-Programmiermodell für die REST-Endpunkte anstelle von Spring MVC verwenden können. Es funktioniert ganz gut mit Jersey 2.x.Ein vollständiges Beispiel zum Erstellen einer Webanwendung mit Jersey 2.x und Spring Boot 1.4.x finden Sie in dieser Antwort .
quelle
Anmerkungsunterschiede
(Stand 2018) Spring MVC wurde nicht auf JAX-RS-Annotationen standardisiert, da seine Lösung älter ist als JAX-RS. Hier sind die Äquivalente:
https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints
Wenn Sie nicht standardisierte APIs verwenden, sollten Sie erwarten, dass diese in einigen Jahren veraltet sind und möglicherweise durch eine neuere experimentelle API ersetzt werden. Die Abwärtskompatibilität ist viel weniger verantwortlich (z. B. wenn neue JDK-Versionen veröffentlicht werden).
quelle
Ich habe sowohl mit Jersey Rest als auch mit Spring Rest und Jersey Rest mit Spring gearbeitet. Beide sind sehr umfangreiche Frameworks mit schönen Implementierungen. Ich würde vorschlagen, dass es besser ist, Spring Rest zu verwenden, wenn Sie andere Spring-Dienste wie ORM, Spring Security und DI usw. verwenden. Beide sind Spring-Bibliotheken, daher finde ich das Verwalten von Code und Abhängigkeiten ein wenig einfach
JAX-RS-Profis:
MVC-Profis im Frühjahr:
Stellen Sie "vollen" Stapel bereit, nicht nur REST-Einrichtungen
Abhängigkeitsinjektion / AOP / Transaktionen
Pluggable View-Vorlagen (JSP, Freemarker, Velocity, ...)
Weitere Informationen finden Sie unter den folgenden Links
quelle
JAX-RS ist die Spezifikation und Trikot usw. sind seine Implementierung. Die Leute verwenden Spring, um RestFul-Webdienste zu erstellen, da Spring zusammen mit einer erholsamen Implementierung Dinge wie die Integration in den Ruhezustand und auch Dinge wie IOC und aspektorientierte Programmierung bietet.
Wenn wir für unsere Implementierung Trikot verwenden, besteht das Problem darin, dass die Daten mithilfe einiger ORM-Technologien vom Back-End abgerufen werden müssen und wir dafür Boilerplate-Code schreiben müssen.
Dies ist der Grund, warum Menschen und sogar Unternehmen Spring verwenden, da es neben der Rest-Implementierung auch Spring-Einrichtungen bietet. Mit der neuesten Spring-Boot-Implementierung können wir jetzt ohne viele Konfigurationen sehr schnell mit der Entwicklung beginnen.
quelle