Весна 4 против Джерси для веб-сервисов REST
мы планируем сделать новое приложение с версией spring 4.0.6. Мы используем контроллер, который может возвращать "XML"или " JSON". В предыдущем проекте мы успешно реализовали Джерси с Spring для поддержки отдыха с помощью JAX-RS API, но после прочтения нескольких статей и предложений от пожилых людей они сказали, что spring обеспечивает довольно хорошую поддержку отдыха.
некоторые моменты, которые действительно смутили меня, если я использую поддержку Spring REST без использования JAX-RS и Джерси являются:
Как маршалинг и unmarshaling сделано весной MVC ?
необходимо ли для маршалинга или демаршалинга использовать jax-rs.
Если маршалинг и unmarshaling автоматически обрабатываются spring, то как он знает о xmlRootElements.
Я все еще смущен, если весна доказывает очень хорошую поддержку отдыха, то почему люди все еще идут с Джерси для отдыха? Действительно чтобы узнать больше в деталях.
Если я сказал что-то не так, Пожалуйста, игнорируйте его. Объяснение с примером действительно полезно.
спасибо заранее!!
2 ответа:
Я бы сказал, что и Джерси, и Spring MVC великолепны - каждый проект имеет свой собственный стиль и сильные стороны. В любом случае, Stack Overflow-это не то место, где можно задавать субъективные сравнения (ваш вопрос будет закрыт довольно быстро). Если вы уже используете Spring для всего остального и не требуются чтобы использовать JAX-RS, тогда Spring MVC имеет полный смысл.
Что касается таких функций, как (un)маршалинг, JAX-RS-это всего лишь спецификация, в конце концов-другие библиотеки могут предложить аналогичные функции без реализации одного и того же API.
вместо провайдеры messagebodyreaders выполняют функцию / Writers, Spring MVC использует HttpMessageConverters для обработки (un)маршалинга ресурсов REST. Spring MVC обрабатывает согласование контента и выбирает лучший доступный конвертер для задания (вы можете аннотировать методы, чтобы указать, какой тип носителя они производят/потребляют).
нет, нет необходимости использовать JAX-RS для (un)marshall ресурсы. Фактически, реализации JAX-RS и Spring MVC используют сторонние библиотеки сериализации для выполнения этой работы; поэтому он не привязан к определенному стандарту.
в своей версии 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 и прост в использовании.