Ich bin ziemlich neu in Spring MVC. Heute, wenn ich @ResponseBody
lernen, ich habe einige Fragen über HttpMessageConverter
s:@ResponseBody, um verschiedene Antwortformat zu wählen
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
</list>
</property>
</bean>
Wie oben erwähnt, könnten wir eine Liste mit verschiedenen Konvertern erklären. Es bedeutet also, dass wir einen von ihnen als Response Body Converter auswählen können.
Aber wie wählt man das zu verwenden? Zum Beispiel in functionA()
, um JSON und dann in zurückzugeben, um XML zurückzugeben.
Mein Weg ist es, Content-Type
der Antwort zu erzwingen, ist es ein richtiger Weg? Oder existiert eine bessere Lösung?
public @ResponseBody User getUser(HttpServletResponse response) {
response.setContentType("application/xml");
// SOME CODES HERE
return user;
}
durch die Art und Weise verwenden, es besser ist, hinzuzufügen "; charset = utf-8" zu erzeugt. – Walfrat
Danke, sehr klare Idee !! Für weitere Details könnten wir nur 'produzieren' mit dem Contetn-Typ setzen, der von Konvertern unterstützt wird, die in RequestMappingHandlerAdapter definiert sind? Oder es unterstützt bereits einige Konverter wie JSON oder String, wir müssen sie nicht explizit in XML-Konfigurationsdateien deklarieren? – DONG
Jeder 'HttpMessageConverter' hat einen' getSupportedMediaTypes', der definiert, welche Medientypen dieser Konverter verarbeiten kann. Sehen Sie sich https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/HttpMessageConverter.html an. –