В чем разница между сервисом Spring Rest и сервисом Jersey Rest Service и Spring + Jersey?

Я хочу создать restful service/API. Я использовал некоторую структуру, такую ​​как игра, чтобы ее создать, но я хочу попробовать другие более эффективные способы. Я слышал, что Джерси является общей библиотекой для создания API-интерфейса, и Spring также является хорошей основой. Но я также видел некоторые решения вроде Spring + Jersey. Таким образом, я немного запутался в этих решениях API для отдыха.

Может ли кто-нибудь сказать мне, в чем разница между ними? Джерси ОТДЫХ, Spring Отдых и Spring + Джерси отдыха?

Моя цель - создать пару API для отдыха, которые принимают json в качестве ввода/вывода. У меня есть jar файл в качестве логики процесса backend для обработки входного json/object и возврата json/object.

Большое спасибо.

Ответ 1

Джерси - это пример реализации JAX-RS API, предоставляемый Sun, а Spring REST - это, конечно, реализация Spring тех же API/JSR. Основное отличие состоит в том, что Spring REST легко интегрируется в другие API Spring (если хотите), например Spring Data Rest.

Есть несколько примечательных различий между ними: вы можете "встроить" ресурсы "Джерси" (известные в Spring в качестве контроллеров) внутри друг друга, чтобы включить отдельный класс, который отвечает за подпуть определенного пути, пока это, кажется, не доступно в Spring прямо сейчас (вы должны определить полный путь). Кроме того, на мой взгляд, Джерси дает лучшие "из коробки" ответы об ошибках (например, почему он не может сопоставлять полезную нагрузку JSON с Java bean с помощью Jackson), в то время как Spring является немного более настраиваемым, но более простым без каких-либо дополнительных работа.

В конце концов, разница в выборе между ними обычно сводится к тому, что вы уже или планируете интегрировать любые другие библиотеки Spring в свое приложение? Если это Spring REST - это путь, так как вам будет намного легче интегрировать его, иначе это действительно личное предпочтение, которое вы предпочитаете использовать. Лично мне нравится Джерси, но сила других связанных с ними проектов Spring (таких как Spring HATEOAS, которые я очень рекомендую) делает Spring лучший выбор. Я не думаю, что в вашем случае будет реальный определяющий фактор.

Как ваша "золотая" цель - простой API с вводом/выводом JSON, я бы рекомендовал вам следовать Spring REST guide.

Ответ 2

Одно существенное различие заключается в области поддержки тестирования модулей.

Jersey Test Framework не поддается издевательскому серверному коду - например, если ваш ресурс REST зависел от Сервиса, вы бы как издеваться над сервисом при тестировании методов ресурсов. Тем не менее, тесты "Джерси" запускают отдельный контейнер, а отдельные тесты выполняют сортировку вызовов для исполняемого экземпляра вашего ресурса REST - на данный момент я не нашел никакой документации или способа издевательского кода на стороне сервера.

Напротив, Spring тесты MVC не требуют каких-либо контейнеров и более хорошо интегрированы с его контроллерами. Инъекция зависимостей может использоваться для инъекции макетных сервисов /DAO для улучшения модульных тестов.

Я также считаю, что документация по проектам Spring более зрелая по сравнению с Джерси.