2016-07-27 9 views
5

Ich bin neu im Frühjahr Entwicklung und wollen wissen, was ist der Unterschied zwischen MediaType.APPLICATION_JSON_VALUE und MediaType.APPLICATION_JSON?Unterschied zwischen 'APPLICATION_JSON' und 'APPLICATION_JSON_VALUE'

Ich habe einen Gedanken an beide repräsentieren gleiche application/json Inhaltstyp, aber wenn ich MediaType.APPLICATION_JSON einige Compiler setzen Fehler angezeigt @controller und @ResponseBody Anmerkungen zu meiner Ruhe Controller hinzufügen und wenn MediaType.APPLICATION_JSON zu benutzen?

@RequestMapping(value="/invite", method = POST, consumes = { MediaType.APPLICATION_JSON }) 
public @ResponseBody String sendInvite(...) { ... } 

Antwort

7

zitieren die javadoc, MediaType.APPLICATION_JSON ein "öffentlicher konstanter Medientyp für application/json" ist, wohingegen ein MediaType.APPLICATION_JSON_VALUE "String äquivalent MediaType.APPLICATION_JSON" ist.

Attribute in Java-Annotationen können nur eine begrenzte Anzahl von Typen sein. Dies verhindert, dass MediaType als Anmerkungsattribut verwendet wird. Um dies zu überwinden, wird stattdessen eine String zusammen mit den verschiedenen String Konstanten auf MediaType einschließlich MediaType.APPLICATION_JSON_VALUE verwendet.

Außerhalb einer Anmerkung, wenn Sie Typ auf ein Medium beziehen möchten, sollten Sie die stark MediaType eher um einen String als vorbei getippt mehr verwenden, die nicht wirklich einen Medientyp sein können. Verwenden Sie also beispielsweise MediaType.APPLICATION_JSON statt MediaType.APPLICATION_JSON_VALUE.

+0

aus dem statischen Block APPLICATION_JSON = valueOf (APPLICATION_JSON_VALUE); – dwilda