使用 Jackson 解决延迟对象序列化问题
您希望阻止 Jackson 序列化未获取的延迟属性的愿望有一个简单的解决方案。感谢 indybee 提供的宝贵意见,我们发现了一个适用于您当前的 Spring、Hibernate 和 Jackson 版本的解决方案。
Spring 版本 3.1.2 及更高版本引入了增强的 MappingJackson2HttpMessageConverter,它合并了以下功能: Spring 3.1教程中提到的自定义转换器。要利用此转换器,请从 WebMvcConfigurerAdapter 扩展 Spring 配置类并重写 configureMessageConverters 方法。
在 configureMessageConverters 方法中,添加注册了 Hibernate4Module 的 MappingJackson2HttpMessageConverter。在 Java 配置中,这可能类似于:
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(jacksonMessageConverter()); super.configureMessageConverters(converters); }
对于 XML 配置,请按照教程中的建议创建自定义 HibernateAwareObjectMapper:
<mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.pastelstudios.json.HibernateAwareObjectMapper" /> </property> </bean> </mvc:message-converters>
此解决方案将 Hibernate4Module 与 Spring 的默认值无缝集成消息转换器,确保未获取的惰性对象不会被 Jackson 序列化。
以上是如何防止 Jackson 在 Spring 中序列化未获取的惰性属性?的详细内容。更多信息请关注PHP中文网其他相关文章!