所以我有一个spring mvc并运行hibernate。
我正在阅读如何使用@ResponseBody添加Restful端点: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类中执行一些特殊操作才能使其正常工作?
答案 0 :(得分:1)
我过去这样做的方式如下:
使用JAXB annotations为您的User
课程添加注释(例如@XmlRootElement
)
勾搭合适的春季HttpMessageConverter
as in this documentation
发送请求时,请确保包含Accept标头:Accept: application/xml
通过这样做,您可以完全控制User
如何“扁平化”为XML,但是您将把所有艰苦工作(确定正确的端点,数据转换)留给Spring。 / p>
答案 1 :(得分:1)
将使用@ResponseBody注释的方法返回类型转换为实际的HTTP响应是通过HttpMessageConverter接口的实现来完成的。 Spring带有implementation for JAXB。因此,如果您可以使用JAXB注释注释User类,那么这可能对您有用。如果User是一个Hibernate注释实体,那么向它添加JAXB也会变得毛茸茸。您可能想要为JAXB创建一个中间对象。
或者,您可以使用Marshalling Message Converter使用任意Marshaller。内置了Marshaller的很多实现可供选择,或者您可以随时编写自己的实现。
您可以通过在AnnotationMethodHandlerAdapter上注册转换器(在调度程序servlet中使用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>
答案 2 :(得分:0)
Spring MVC与XStream集成(将对象转换为XML)
这是一种有趣的方法:http://www.stupidjavatricks.com/?p=54
您必须在类中设置XStreamAlias
注释并将Spring配置为使用XStream。
我还指出Spring输出是xml。在您的网址示例中应该是:
http://localhost:8080/services/user/get/1.xml