2009-10-21 4 views
29

Есть ли способ построить Spring Web звонки, которые потребляют и производят application/json отформатированные запросы и ответы соответственно?Spring 3 JSON с MVC

Возможно, это не Весна MVC, я не уверен. Я ищу библиотеки Spring, которые ведут себя так же, как Jersey/JSON. Лучшим случаем было бы, если бы была аннотация, которую я мог бы добавить к классам Controller, которые превратили бы их в вызовы службы JSON.

Учебное пособие, показывающее, как построить Весенние веб-сервисы с JSON были бы замечательными.


EDIT: Я искал подход, основанный на аннотаций (аналогично-Джерси).

EDIT2: Как и Джерси, я ищу поддержку REST (POST, GET, DELETE, PUT).

EDIT3: Наиболее предпочтительно, это будет pom.xml запись и некоторая информация об использовании пружинного JS с Джексоном весной родную версии вещей.

+0

Аналогичная тема поднимается здесь: http://stackoverflow.com/questions/658936/is-there-a-library-to-convert-java-pojos-to-and-from-json-and-xml –

+0

dma_k - этот вопрос действительно не похож. Этот вопрос задает вопрос о преобразовании java-объектов и JSON, который задает конкретно, как использовать Spring MVC для отправки и получения сообщений JSON. – stevedbrown

ответ

31

В случае других госзакупках сюда позже: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ был самым полезным звеном для меня. Это, наконец, заставило меня понять модель (после менее чем дня поиска).

+2

Это намного лучше, если вы уже на весне 3. Проект Spring-JSON замечательный, но, к сожалению, он использует Spring 2.5. –

17

У вас могут быть контроллеры, которые возвращают представление, которое находится в выводе JSON. Взгляните на the Spring-JSON project.

Чтобы использовать запросы в JSON, я бы предположил, что вы просто хотите, чтобы контроллер передал параметр запроса в библиотеку JSON, которая могла бы анализировать данные?

+1

Это не совсем то, что я хочу. Он должен работать как Джерси, я не хочу передавать вещи, контроллер MVC должен быть обернут аспектным слоем JSON (возможно, через аннотации), который позволяет ему отправлять и получать JSON. Проект Spring-JSON выполняет половину этого (посылки), но не вторую половину. – stevedbrown

4

Там не расфасованный способа сделать то, что вы хотите, как Джерси хорошо интегрирован с Spring через Jersey-Spring API, так что на самом деле нет причин заново изобрести колесо.

+0

В настоящее время я использую Джерси, и это хорошо. Чтобы быть честным, я не считаю интеграцию Spring неотразимой, что не очень важно. Как и Spring MVC против Struts, я не ожидаю больших изменений в функции Spring Rest JSON, я просто пытаюсь выяснить, существует ли она на самом деле, поэтому я могу попробовать ее. – stevedbrown

0

Кажется, что каркас DWR выглядит очень близко к тому, что вы хотите получить.

0

Вы можете настроить перехватчики Spring MVC через handler mappings, а затем использовать преобразования для преобразования возвращаемых данных в JSON. Конфигурация обработчика может быть выполнена в xml (нет необходимости перекомпилировать), и это может быть полностью прозрачным для остальной части приложения.

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

Я использовал этот подход для преобразования результата с весенних контроллеров в вызовы GWT RPC.

Вы также можете использовать Spring AOP для перехвата вызовов метода контроллера и разворачивания/переноса запросов из/в JSON.

2

Начиная с весны-mvc 3.0 официальная поддержка Ajax с помощью JSON предоставляется как часть Spring MVC.Это включает поддержку для генерации ответов JSON и связывания запросов JSON с использованием модели программирования Spring MVC @Controller.

см here

2

Эта функция теперь является частью Spring начиная с версии 3.0. Вы можете просто использовать аннотацию @ResponseBody, чтобы указать, что вы хотите, чтобы возвращаемое значение из ваших методов обработчика запроса было сериализовано в JSON и отправлено в качестве тела ответа. См. http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/