Spring @ResponseBody Json循环参考


问题内容

我正在尝试使用Spring 3.x @ResponseBody生成json / xml响应,当存在许多关系黑白表时,我正在使用JPA 2.0
ORM,然后json抛出LazyInitializationException

如果我给出“渴望获取”,那么它将进入循环引用。


问题答案:

因此,解决方案是升级到Jackson 2.0,并在类中添加以下注释:

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, 
                  property = "@id")
public class SomeEntityClass ...

然后的问题是,Spring无法与Jackson 2.0一起使用。这已通过以下方式解决:

<bean id="jacksonMessageConverter"
          class="own.implementation.of.MappingJacksonHttpMessageConverter"/>

<bean class="org.springframework.web.servlet.mvc
             .annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jacksonMessageConverter"/>
            </list>
        </property>
        <property name="requireSession" value="false"/>
    </bean>

并且own.implementation.of.MappingJacksonHttpMessageConverter基于此:

http://www.jarvana.com/jarvana/view/org/springframework/spring-
web/3.0.0.RELEASE/spring-web-3.0.0.RELEASE-
sources.jar!/org/springframework/http/converter
/json/MappingJacksonHttpMessageConverter.java?format=ok

但是,请使用Jackson 2.0中的ObjectMapper和其他Jackson类而不是Jackson 1 *。