您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java避免在未获取的惰性对象上进行Jackson序列化

Java避免在未获取的惰性对象上进行Jackson序列化

我终于找到了解决方案!感谢Indybee给我一个线索。

Spring 3.1,Hibernate 4和Jackson-Module-Hibernate教程为Spring 3.1和早期版本提供了一个很好的解决方案。但是由于Spring版本3.1.2拥有自己的MappingJackson2HttpMessageConverter,其功能与本教程中的功能几乎相同,因此我们不需要创建此自定义HTTPMessageConverter。

使用javaconfig,我们也不需要创建HibernateAwareObjectMapper,只需将Hibernate4Module添加到Spring已经拥有的认MappingJackson2HttpMessageConverter并将其添加到应用程序的HttpMessageConverters中,因此我们需要:

WebMvcConfigurerAdapter扩展spring config类,并重写configureMessageConverters方法

在该方法添加MappingJackson2HttpMessageConverter与Hibernate4Module在previus方法进行注册

我们的配置类应如下所示:

@Configuration
@EnableWebMvc
public class MyConfigClass extends WebMvcConfigurerAdapter{

    //More configuration....

    /* Here we register the Hibernate4Module into an ObjectMapper, then set this custom-configured ObjectMapper
     * to the MessageConverter and return it to be added to the HttpMessageConverters of our application*/
    public MappingJackson2HttpMessageConverter jacksonMessageConverter(){
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();

        ObjectMapper mapper = new ObjectMapper();
        //Registering Hibernate4Module to support lazy objects
        mapper.registerModule(new Hibernate4Module());

        messageConverter.setObjectMapper(mapper);
        return messageConverter;

    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        //Here we add our custom-configured HttpMessageConverter
        converters.add(jacksonMessageConverter());
        super.configureMessageConverters(converters);
    }

    //More configuration....
}

如果你具有xml配置,则也不需要创建自己的MappingJackson2HttpMessageConverter,但是需要创建出现在教程(HibernateAwareObjectMapper)中的个性化映射器,因此xml配置应如下所示:

<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>

希望这个答案是可以理解的,并且可以帮助任何人找到解决该问题的方法,任何问题都可以随时提出!

java 2022/1/1 18:15:59 有493人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶