Меня смутила разница между JAX-RS (ну, может быть, для сравнения следует использовать Джерси, поскольку JAX-RS - это просто спецификация) и Spring для сервисов Restful . Я попытался найти дополнительную информацию в Интернете, и это стало более запутанным. Моя компания использует Spring MVC для разработки Restful API.
Непонятная часть заключается в том, что JAX-RS означает Java API для веб-служб RESTful , в Spring я также использую java для разработки веб-служб RESTful, поэтому я не вижу различий. Соответствует ли Spring спецификациям JAX-RS?
Из того, что я знаю до сих пор:
- JAX-RS - это план / спецификация, в качестве реализации он имеет Jersey, RESTeasy и т. Д.
spring-webmvc
модулем, который также предоставляет Spring модель-представление-контроллер.Ответы:
JAX-RS
JAX-RS - это спецификация для реализации веб-сервисов REST в Java, в настоящее время определенная в JSR-370 . Это часть технологий Java EE , в настоящее время определенных в JSR 366 .
Jersey (поставляется с GlassFish и Payara) является эталонной реализацией JAX-RS, однако существуют и другие реализации, такие как RESTEasy (поставляется с JBoss EAP и WildFly) и Apache CXF (поставляется с TomEE и WebSphere).
Spring Framework
Spring Framework является полной структурой , которая позволяет создавать корпоративные приложения Java. Возможности REST предоставляются модулем Spring MVC (тот же модуль, который предоставляет возможности контроллера представления модели ). Это не реализация JAX-RS, и ее можно рассматривать как альтернативу Spring стандарту JAX-RS.
Экосистема Spring также предоставляет широкий спектр проектов для создания корпоративных приложений, включая постоянство, безопасность, интеграцию с социальными сетями, пакетную обработку и т. Д.
Примеры
Рассмотрим следующий контроллер ресурсов, использующий JAX-RS API:
Эквивалентная реализация с использованием Spring MVC API:
Использование Spring Boot и Jersey
Spring Boot предоставляет
spring-boot-starter-jersey
модуль, который позволяет использовать модель программирования JAX-RS для конечных точек REST вместо Spring MVC. Он неплохо работает с Jersey 2.x.Полный пример создания веб-приложения с помощью Jersey 2.x и Spring Boot 1.4.x см. В этом ответе .
источник
Различия в аннотациях
(По состоянию на 2018 год) Spring MVC не стандартизирован для аннотаций JAX-RS, поскольку его решение предшествует JAX-RS. Вот эквиваленты:
https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints
Если вы используете нестандартные API, вы должны ожидать, что они будут устаревшими и, возможно, заменены более новым экспериментальным API через несколько лет. Намного меньше ответственности за обратную совместимость (например, когда выпускаются новые версии JDK).
источник
Я работал как с Jersey Rest, так и с Spring Rest и Jersey Rest с пружиной. Оба они представляют собой очень богатые фреймворки с хорошими реализациями. Я бы посоветовал лучше использовать Spring rest, если вы используете другие службы Spring, такие как ORM, Spring security и DI и т. Д. Обе библиотеки являются Spring библиотеками, поэтому мне немного легче управлять кодом и зависимостями.
Плюсы JAX-RS:
Плюсы Spring MVC:
Предоставлять «полный» стек, а не только возможности REST
Внедрение зависимостей / AOP / Транзакции
Подключаемые шаблоны представления (JSP, freemarker, скорость, ...)
Вы можете узнать больше по следующим ссылкам
источник
JAX-RS - это спецификация, а джерси и т. Д. - его реализация. Люди используют Spring для создания веб-сервисов RestFul, потому что spring вместе с спокойной реализацией предоставляет такие вещи, как интеграция с гибернацией, а также такие вещи, как IOC и ориентированное на аспекты программирование.
Там, где, как если бы мы использовали трикотаж для нашей реализации, проблема будет в том, что данные должны быть получены из серверной части с использованием некоторых технологий ORM, и нам придется написать шаблонный код для этого.
По этой причине люди и даже предприятия используют Spring, поскольку наряду с реализацией Rest он также предоставляет возможности Spring. И теперь, используя последнюю реализацию загрузки Spring, мы можем очень быстро начать разработку без множества настроек.
источник