Spring MVC с Hibernate, как я могу добавить конечную точку службы отдыха? - PullRequest
1 голос
/ 22 ноября 2011

Итак, у меня есть Spring mvc и он работает с Hibernate.

Я читаю, как я могу добавить Restful конечные точки с помощью @ResponseBody: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

Так что если у меня есть конечная точкакак:

http://localhost:8080/services/user/get/1

Я получу пользователя с userId = 1, как я вернусь и как он преобразует мой пользовательский объект в представление XML?

Нужно ли что-то делатьчто в моем классе User.java для этого работает?

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Преобразование типов возврата метода, аннотированных @ResponseBody, в фактические HTTP-ответы осуществляется реализациями интерфейса HttpMessageConverter . Spring поставляется с реализацией для JAXB . Поэтому, если вы можете аннотировать свой класс User аннотациями JAXB, это может сработать для вас. Если пользователь является аннотируемым объектом Hibernate, добавление в него JAXB также может стать проблематичным. Вы можете создать промежуточный объект для JAXB.

В качестве альтернативы вы можете использовать любой произвольный маршаллер с помощью Marshalling Message Converter . Существует довольно много реализаций Marshaller , встроенных на выбор, или вы всегда можете написать свою собственную.

Вы включаете конвертеры, регистрируя их в AnnotationMethodHandlerAdapter (в сервлете диспетчера xml:

<bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter">
    <property name="supportedMediaTypes" value="text/xml" />
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="xmlMessageConverter"/>
        </list>
    </property>
</bean>
1 голос
/ 22 ноября 2011

То, как я делал это в прошлом, выглядит следующим образом:

  • Аннотируйте свой класс User с помощью JAXB-аннотаций (например, @XmlRootElement)

  • Подключите подходящую пружину HttpMessageConverter , как в этой документации

  • При отправке запроса убедитесь, чточтобы включить заголовок Accept: Accept: application/xml

Сделав это, вы получите полный контроль над тем, как ваш User будет "сведен" к XML, но вы оставляете всетяжелая работа (определение правильной конечной точки, преобразование данных) в Spring.

0 голосов
/ 22 ноября 2011

Spring MVC имеет интеграцию с XStream (конвертировать объекты в XML)

Это интересный подход: http://www.stupidjavatricks.com/?p=54

Вы должны установить аннотацию XStreamAlias в своем классе и настроить Spring на использование XStream.

Я также указываю Spring, что вывод - xml. В вашем примере URL это должно быть:

http://localhost:8080/services/user/get/1.xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...