Maison  >  Article  >  Java  >  Comment utiliser le convertisseur de messages SpringBoot HttpMessageConverter

Comment utiliser le convertisseur de messages SpringBoot HttpMessageConverter

PHPz
PHPzavant
2023-05-10 19:40:041664parcourir

Le rôle du convertisseur de message

  • Convertir le message de requête en objet Java

  • Convertir les objets Java sont convertis en messages de réponse Collection MediaType prise en charge (telle que : text/html, text/plain, application/json)

canRead : Déterminez si elle peut être lue (demande)

  • read : Convertir le format des données de la requête (appelé lorsque la valeur de retour de la méthode canRead est vraie)

  • canWrite : Déterminer si cela peut être écrit (réponse)

  • write : Convertir les données de réponse au format (appelé lorsque la valeur de retour de la méthode canWrite est vraie) #🎜 🎜#

  • #🎜🎜 #Convertisseur de messages configuré par défaut
  • SpringMVC configurera automatiquement certaines méthodes HttpMessageConverter (addDefaultHttpMessageConverters de la classe WebMvcConfigurationSupport) au démarrage

    # 🎜🎜 #Le code source est le suivant :
  • 	protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
    		messageConverters.add(new ByteArrayHttpMessageConverter());
    		messageConverters.add(new StringHttpMessageConverter());
    		messageConverters.add(new ResourceHttpMessageConverter());
    		messageConverters.add(new ResourceRegionHttpMessageConverter());
    		try {
    			messageConverters.add(new SourceHttpMessageConverter<>());
    		}
    		catch (Throwable ex) {
    			// Ignore when no TransformerFactory implementation is available...
    		}
    		messageConverters.add(new AllEncompassingFormHttpMessageConverter());
    		if (romePresent) {
    			messageConverters.add(new AtomFeedHttpMessageConverter());
    			messageConverters.add(new RssChannelHttpMessageConverter());
    		}
    		if (jackson2XmlPresent) {
    			Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.xml();
    			if (this.applicationContext != null) {
    				builder.applicationContext(this.applicationContext);
    			}
    			messageConverters.add(new MappingJackson2XmlHttpMessageConverter(builder.build()));
    		}
    		else if (jaxb2Present) {
    			messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
    		}
    		if (jackson2Present) {
    			Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.json();
    			if (this.applicationContext != null) {
    				builder.applicationContext(this.applicationContext);
    			}
    			messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build()));
    		}
    		else if (gsonPresent) {
    			messageConverters.add(new GsonHttpMessageConverter());
    		}
    		else if (jsonbPresent) {
    			messageConverters.add(new JsonbHttpMessageConverter());
    		}
    		if (jackson2SmilePresent) {
    			Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.smile();
    			if (this.applicationContext != null) {
    				builder.applicationContext(this.applicationContext);
    			}
    			messageConverters.add(new MappingJackson2SmileHttpMessageConverter(builder.build()));
    		}
    		if (jackson2CborPresent) {
    			Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.cbor();
    			if (this.applicationContext != null) {
    				builder.applicationContext(this.applicationContext);
    			}
    			messageConverters.add(new MappingJackson2CborHttpMessageConverter(builder.build()));
    		}
    	}
  • Analyse du convertisseur de message partiel

Name

Description # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # MappingJackson2httpMessageConverter # 🎜🎜 ## 🎜🎜 # Responsable de la lecture et de l'écriture de données de format JSON (en utilisant Jackson) # 🎜🎜 # # #

AllEncompassingFormHttpMessageConverter

Responsable de la lecture et de l'écriture des données du formulaire #ByteArrayHttpMessageConverter# 🎜🎜#StringHttpMessageConverter Responsable de la lecture et de l'écriture des données au format chaîneResourceHttpMessageConverterResponsable de la lecture et de l'écriture des données du fichier de ressources#🎜 🎜#Notes#🎜🎜 #Le processus de traitement correspondra au convertisseur de message approprié dans l'ordre de la collection. S'il existe un convertisseur de message approprié, le convertisseur de message sera utilisé pour le traitement (lecture, écriture), et les convertisseurs de message suivants le seront. ne soit pas exécuté. Lors de l'ajout d'un convertisseur de messages personnalisé, faites attention à savoir si le convertisseur de messages par défaut est en vigueurWebMvcConfigurer.extendMessageConverters La méthode ne remplace pas la collection de convertisseurs de messages par défaut
Responsable de la lecture et de l'écriture des données au format binaire
# 🎜🎜#
SourceHttpMessageConverter Responsable pour lire et écrire des données de ressources
Le système dispose d'un ensemble de convertisseurs de messages configurés par défaut.
Pour qu'un convertisseur de messages personnalisé prenne effet, il doit être placé devant les convertisseurs de messages du même type dans la collection. Pour la raison, veuillez vous référer au deuxième point. Réflexion : Étant donné que le convertisseur de message personnalisé doit être placé devant le même type de convertisseur de message dans la collection, le convertisseur de message original de la collection peut-il être directement modifié pour obtenir l'effet personnalisé ? pas besoin d'en rajouter un autre (pas encore étudié).
La méthode WebMvcConfigurer.configureMessageConverters remplacera la Ensemble de convertisseurs de messages par défaut# 🎜🎜#

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer