Разница между JAX-RS и Spring Отдых

Я перепутал разницу между JAX-RS (ну, может, стоит использовать Джерси для сравнения, поскольку JAX-RS - просто спецификация) и Spring для Restful сервисов. Я попытался найти больше информации в Интернете, и это стало более запутанным. Моя компания использует Spring MVC для разработки Restful API

Смущает то, что JAX-RS обозначает Java API для RESTful Web Services, spring я также использую java для разработки RESTful Web Services, так что на самом деле я не понимаю различий. Соответствует ли Spring спецификациям JAX-RS?

Из того, что я знаю до сих пор:

  1. JAX-RS - это проект/спецификация, в качестве реализаций он использует Jersey, RESTeasy и т.д.

Ответ 1

JAX-RS

JAX-RS является спецификацией для реализации веб-сервисов REST в Java, в настоящее время определяемых 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 также предоставляет широкий спектр проектов для создания корпоративных приложений, охватывающих настойчивость, безопасность, интеграцию с социальными сетями, пакетную обработки и т.д.

Примеры

Рассмотрим следующий контроллер ресурсов, используя API JAX-RS:

@Path("/greetings")
public class JaxRsController {

    @GET
    @Path("/{name}")
    @Produces(MediaType.TEXT_PLAIN)
    public Response greeting(@PathParam("name") String name) {

        String greeting = "Hello " + name;
        return Response.ok(greeting).build();
    }
}

Эквивалентная реализация с использованием API Spring MVC:

@RestController
@RequestMapping("/greetings")
public class SpringRestController {

    @RequestMapping(method = RequestMethod.GET,
                    value = "/{name}", 
                    produces = MediaType.TEXT_PLAIN_VALUE)
    public ResponseEntity<?> greeting(@PathVariable String name) {

        String greeting = "Hello " + name;
        return new ResponseEntity<>(greeting, HttpStatus.OK);
    }
}

Использование 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 обратитесь к этому .

Ответ 2

Различия аннотаций

(По состоянию на 2018 г.) Spring MVC не стандартизирован для аннотаций JAX-RS, поскольку его решение предшествует JAX-RS. Вот эквиваленты:

enter image description here

https://stormpath.com/blog/jax-rs-vs-spring-rest-endpoints

Если вы используете нестандартизированные API, вы должны ожидать, что они устареют и, возможно, будут заменены более новым экспериментальным API через несколько лет. Относительно обратной совместимости гораздо меньше ответственности (например, когда выпускаются новые версии JDK).

Ответ 3

Я работал с Джерси Рест, весенним отдыхом и Джерси Рест с spring. Оба они - очень богатые фреймворки с хорошими реализациями. Я бы посоветовал лучше использовать Spring rest, если вы используете другие сервисы Spring, такие как ORM, Spring Security, DI и т.д. Обе они являются библиотеками Spring, поэтому мне немного легче управлять кодом и зависимостями

JAX-RS профи:

  • Стандарт JSR можно запустить без контейнера сервлетов (гризли, просто, ...)
  • Готовые к реализации реализации (трикотаж, cxf, resteasy, restlet, ...) предназначен только для приложений REST

Весенние профессионалы MVC:

  • Обеспечить "полный" стек, а не только средства REST

  • Внедрение зависимостей /AOP/Транзакции

  • Сменные шаблоны представления (JSP, freemarker, скорость,...)

Вы можете проверить больше по следующим ссылкам

  1. https://www.infoq.com/articles/springmvc_jsx-rs
  2. Зачем использовать JAX-RS/Джерси?

Ответ 4

JAX-RS - спецификация и трикотаж и т.д. - это его реализация. Люди используют Spring для создания веб-сервисов RestFul, так как Spring наряду с спокойной реализацией предоставляет такие вещи, как интеграция спящего режима, а также такие вещи, как IOC и ориентированное на Aspect программирование.

Где, как если бы мы использовали трикотаж для нашей реализации, проблема будет заключаться в том, что данные должны извлекаться из задней части с использованием некоторых технологий ORM, и нам придется писать код шаблона для того же самого.

Именно по этой причине люди и даже предприятия используют Spring, как и при реализации Rest, он также предоставляет средства Spring. И теперь, используя последнюю версию загрузки Spring, мы можем начать разработку очень быстро без множества конфигураций.