Lors de l'utilisation d'objets paresseux dans une application, leur sérialisation à l'aide de Jackson peut provoquer des exceptions si l'objet paresseux n'a pas été récupéré. Ce problème peut survenir, par exemple, lorsque vous essayez de récupérer un utilisateur avec un attribut « coordonnées » chargé paresseusement à l'aide de la sérialisation de Jackson.
Pour empêcher Jackson de sérialiser des objets paresseux non récupérés, un MappingJackson2HttpMessageConverter peut être créé et enregistré dans les HttpMessageConverters de l'application. Ce convertisseur personnalisé peut utiliser un HibernateAwareObjectMapper pour configurer Jackson afin qu'il prenne en charge les objets paresseux.
1. Étendre WebMvcConfigurerAdapter
Créez une classe de configuration qui étend WebMvcConfigurerAdapter et remplace la méthode configureMessageConverters.
2. Créez un HibernateAwareObjectMapper (facultatif pour la configuration XML)
Si vous utilisez une configuration XML, créez un HibernateAwareObjectMapper personnalisé pour prendre en charge les objets paresseux.
3. Enregistrez le Hibernate4Module
Dans la méthode configureMessageConverters, créez un nouveau MappingJackson2HttpMessageConverter et enregistrez-y le Hibernate4Module. Ce module permet à Jackson de gérer des objets paresseux.
4. Définissez l'ObjectMapper sur le convertisseur
Configurez le MappingJackson2HttpMessageConverter avec HibernateAwareObjectMapper ou le module enregistré.
5. Ajoutez le convertisseur aux HttpMessageConverters
Appelez la méthode super.configureMessageConverters(converters) pour ajouter le convertisseur personnalisé à la liste.
Configuration XML : Modifier le mvc:message-converters élément pour utiliser un MappingJackson2HttpMessageConverter avec un HibernateAwareObjectMapper personnalisé.
Configuration Java : Utilisez la méthode jacksonMessageConverter pour créer et configurer le MappingJackson2HttpMessageConverter, puis ajoutez-le aux HttpMessageConverters list.
En suivant ces étapes, vous pouvez configurer Jackson pour gérer correctement les objets paresseux et éviter les exceptions lors de la sérialisation. Cette solution exploite les capacités intégrées de MappingJackson2HttpMessageConverter et de Hibernate4Module pour prendre en charge de manière transparente les objets paresseux dans la sérialisation Jackson.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!