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


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

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

  1. Как маршалинг и unmarshaling сделано весной MVC ?

  2. необходимо ли для маршалинга или демаршалинга использовать jax-rs.

  3. Если маршалинг и unmarshaling автоматически обрабатываются spring, то как он знает о xmlRootElements.

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

Если я сказал что-то не так, Пожалуйста, игнорируйте его. Объяснение с примером действительно полезно.

спасибо заранее!!

2 111

2 ответа:

Я бы сказал, что и Джерси, и Spring MVC великолепны - каждый проект имеет свой собственный стиль и сильные стороны. В любом случае, Stack Overflow-это не то место, где можно задавать субъективные сравнения (ваш вопрос будет закрыт довольно быстро). Если вы уже используете Spring для всего остального и не требуются чтобы использовать JAX-RS, тогда Spring MVC имеет полный смысл.

Что касается таких функций, как (un)маршалинг, JAX-RS-это всего лишь спецификация, в конце концов-другие библиотеки могут предложить аналогичные функции без реализации одного и того же API.

  1. вместо провайдеры messagebodyreaders выполняют функцию / Writers, Spring MVC использует HttpMessageConverters для обработки (un)маршалинга ресурсов REST. Spring MVC обрабатывает согласование контента и выбирает лучший доступный конвертер для задания (вы можете аннотировать методы, чтобы указать, какой тип носителя они производят/потребляют).

  2. нет, нет необходимости использовать JAX-RS для (un)marshall ресурсы. Фактически, реализации JAX-RS и Spring MVC используют сторонние библиотеки сериализации для выполнения этой работы; поэтому он не привязан к определенному стандарту.

  3. в своей версии 4.0.6 Spring поддерживает многие HttpMessageConverters, С Jackson для JSON, JAXB для XML и многих других. Весна 4.1.0 добавил больше HttpMessageConverters:

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

чтобы ответить на ваш последний пункт, @XmlRootElement является аннотацией JAXB и не является частью JAX-RS. Весна поддерживает JAXB.

для более полного примера с отдыхом весной, проверьте это руководство по началу работы (вы получите полный пример работы в течение 10-15 минут).

снова последняя часть вашего вопрос довольно субъективный - существует множество популярных решений для построения служб отдыха в СПМ, не только Джерси и спринг (Dropwizard, Play! Рамки и т. д.).

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

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