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

So verwenden Sie den SpringBoot HttpMessageConverter-Nachrichtenkonverter

PHPz
Freigeben: 2023-05-10 19:40:04
nach vorne
1817 Leute haben es durchsucht

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()));
    		}
    	}
    Nach dem Login kopieren

    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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage