Heim  >  Artikel  >  Java  >  So verwenden Sie den SpringBoot HttpMessageConverter-Nachrichtenkonverter

So verwenden Sie den SpringBoot HttpMessageConverter-Nachrichtenkonverter

PHPz
PHPznach vorne
2023-05-10 19:40:041664Durchsuche

Die Rolle des Nachrichtenkonverters

  • Konvertieren Sie die Anforderungsnachricht in ein Java-Objekt

  • Konvertieren Sie das Java-Objekt in eine Antwortnachricht

Die Hauptmethode des Nachrichtenkonverters

  • getSupportedMediaTypes: Holen Sie sich die Unterstützte MediaType-Sammlung (z. B. Text/HTML, Text/Plain, Anwendung/JSON) Der Rückgabewert der Methode canRead ist wahr )

  • Der standardmäßig konfigurierte Nachrichtenkonverter

  • SpringMVC-Startup Einige HttpMessageConverter-Methoden (addDefaultHttpMessageConverters der WebMvcConfigurationSupport-Klasse) werden automatisch wie folgt konfiguriert:
  • 	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()));
    		}
    	}

    Teil der Nachrichtenkonverteranalyse

  • Name: Beschreibung data
  • Jaxb2RootElementHttpMessageConverter
Verantwortlich für Lesen und Schreiben von Daten im XML-Format (mit JAXB)

ByteArrayHttpMessageConverter

ist für das Lesen und Schreiben von Binärformaten verantwortlich sourceHttpMessageConverter

ist Verantwortlich für das Lesen und Schreiben von Ressourcendateidaten. Damit ein benutzerdefinierter Nachrichtenkonverter wirksam wird, muss er vor Nachrichtenkonvertern desselben Typs in der Sammlung platziert werden. Den Grund hierfür finden Sie im zweiten Punkt. Denken: Da der benutzerdefinierte Nachrichtenkonverter vor dem Nachrichtenkonverter desselben Typs in der Sammlung platziert werden muss, kann der ursprüngliche Nachrichtenkonverter in der Sammlung direkt geändert werden, um den benutzerdefinierten Effekt zu erzielen, ohne dass ein weiterer (vorübergehend) hinzugefügt werden muss Noch nicht untersucht). Die Methode WebMvcConfigurer.configureMessageConverters überschreibt die Standard-Nachrichtenkonverter-Sammlung.
SourceHttpMessageConverter. Der Verarbeitungsprozess stimmt mit dem entsprechenden Nachrichtenkonverter in der Reihenfolge des Satzes überein. Wenn ein geeigneter Nachrichtenkonverter vorhanden ist, wird der Nachrichtenkonverter für die Verarbeitung (Lesen, Schreiben) verwendet und nachfolgende Nachrichtenkonverter werden nicht ausgeführt.
Achten Sie beim Hinzufügen eines benutzerdefinierten Nachrichtenkonverters darauf, ob der Standard-Nachrichtenkonverter aktiv ist.
Die Methode WebMvcConfigurer.extendMessageConverters überschreibt den Standard-Nachrichtenkonverter nicht Sammlung

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den SpringBoot HttpMessageConverter-Nachrichtenkonverter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen