Весна 4 проти Джерсі для веб-сервісів REST


117

Ми плануємо зробити нову заявку з весняною версією 4.0.6. Ми використовуємо контролер, який може повернути "XML" або "JSON". У попередньому проекті ми успішно реалізували Джерсі з Spring для підтримки REST за допомогою API JAX-RS, але, прочитавши кілька статей та пропозицій від старших, вони сказали, що весна забезпечує досить гарну підтримку REST.

Деякі моменти, які мене дуже збивали з пантелику, якщо я використовую підтримку Spring REST без використання JAX-RS та Jersey, є:

  1. Як проводиться марширування та нерозбірливість у весняному MVC?

  2. Чи потрібно для марширування або розмальовування потрібно використовувати jax-rs.

  3. Якщо до весни автоматично обробляються зйомки та зняття рішень, то як це знати про xmlRootElements.

Я все ще плутаюся, якщо весна виявляє дуже гарну підтримку REST, то чому люди все ще ходять з Джерсі на REST? Дійсно шукаю, щоб дізнатись детальніше.

Якщо я сказав щось не так, будь ласка, проігноруйте це. Пояснення з прикладом справді корисно.

Спасибі заздалегідь!!

Відповіді:


119

Я б сказав, що і Джерсі, і Spring MVC чудові - кожен проект має свій стиль та сильні сторони. У будь-якому випадку, переповнення стека - це не найкраще місце для запитання суб'єктивних порівнянь (ваше питання було б закрито досить швидко). Якщо ви вже використовуєте Spring для всього іншого, і вам не потрібно використовувати JAX-RS, то Spring MVC має повний сенс.

Що стосується таких функцій, як (не) марширування, JAX-RS все-таки є лише специфікацією - інші бібліотеки можуть пропонувати подібні функції, не застосовуючи той же API.

  1. Замість MessageBodyReaders / Writers, Spring MVC використовує HttpMessageConverters для обробки (не) маршалінгу REST-ресурсів. Spring MVC обробляє узгодження контенту та вибирає найкращий доступний конвертер для роботи (ви можете коментувати методи, щоб натякати, який тип носія вони виробляють / споживають).

  2. Ні, не потрібно використовувати JAX-RS для (не) ресурсів маршрутизації. Фактично, реалізації JAX-RS та Spring MVC використовують для виконання цієї роботи сторонні бібліотеки серіалізації; тому він не прив’язаний до певного стандарту.

  3. У своїй версії 4.0.6 Spring підтримує багато HttpMessageConverters , з Джексоном для JSON, JAXB для XML та багатьма іншими. Навесні 4.1.0 додано більше HttpMessageConverters :

    • Джексон тепер доступний як для JSON, так і для XML
    • Google Protobuf
    • Gson для JSON , як альтернатива Джексону

Відповісти на ваш останній пункт @XmlRootElement- це анотація JAXB і не є частиною JAX-RS. Весна підтримує JAXB .

Для більш повного прикладу з REST навесні, ознайомтеся з цим посібником для початку роботи (ви отримаєте повний приклад, що працює за 10-15 хвилин).

Знову ж таки, остання частина вашого питання є досить суб’єктивною - існує багато популярних рішень для побудови REST-послуг у JVM, а не лише Джерсі та Спринг (Dropwizard, Play! Framework та ін.).


2
Де ви б запропонували комусь задати таке питання?
заплив

8
"ваше питання було б закрито досить швидко"! Не так швидко :)
Afshin Moazami

6
У мене є любов стакковерф, і я люблю квору, мені ніколи не подобалася ця закриваюча політика щодо суб'єктивних питань, і я ніколи не думав про те, щоб задавати технічні питання в кворі
Kalpesh Soni

Одне дотичне запитання: Чи можемо ми мати і Джерсі, і SpringRest в одному EAR, обидва працюють разом для різних служб?
pramodc84

22

Підтримка AFAIK Spring REST заснована на Spring MVC та його не на JAX-RS впровадженні, в той час як Джерсі впровадив специфікацію JAX-RS. Ті, хто має Spring (Core, AOP або MVC) у своєму проекті, вибирає підтримку Spring ReST над реалізатором JAX-RS.

Я рекомендую Джерсі як його зрілий, реалізує JAX-RS і простий у використанні.


1
Дякуємо за відповідь, як проводиться марширування та знешкодження навесні без використання jax-rs.
Робін Саксена

так, я згоден з вами. Spring Web MVC Rest не такий простий у використанні. Існує багато конфігурацій, про які потрібно подбати.
Еван Ху

2
Джерсі також є хорошим вибором, якщо ви використовуєте (або хочете використовувати) весняний черевик. cf документація
herau

1
Ви можете використовувати бібліотеку Google GSON для маршалінгу та демонтажу. Він підтримує дженерики та спеціальні об'єкти Java.
Tejzeratul
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.