2016-07-27 16 views
5

Jestem nowy w rozwoju wiosny i chcę wiedzieć, jaka jest różnica między MediaType.APPLICATION_JSON_VALUE i MediaType.APPLICATION_JSON?Różnica między "APPLICATION_JSON" i "APPLICATION_JSON_VALUE"

mam myśl oba reprezentują ten sam typ zawartości application/json ale jeśli mogę umieścić MediaType.APPLICATION_JSON niektóre błędy kompilatora są pokazane, aby dodać @controller i @ResponseBody adnotacji do mojego kontrolera spoczynku i kiedy używać MediaType.APPLICATION_JSON?

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

Odpowiedz

7

zacytować javadoc, MediaType.APPLICATION_JSON jest „publiczna stała typ nośnika dla application/json”, natomiast MediaType.APPLICATION_JSON_VALUE jest „odpowiednikiem Ciąg MediaType.APPLICATION_JSON”.

Atrybuty na adnotacjach Java mogą być tylko jednym z ograniczonego zestawu typów. Zapobiega to używaniu MediaType jako atrybutu adnotacji. Aby temu zaradzić, zamiast niego używa się String wraz z różnymi stałymi String na MediaType, w tym MediaType.APPLICATION_JSON_VALUE.

Poza adnotacją, jeśli chcesz odwołać się do typu nośnika, powinieneś użyć raczej napisanego MediaType niż omijać String, który może, ale nie musi, być typem nośnika. Na przykład możesz użyć MediaType.APPLICATION_JSON zamiast MediaType.APPLICATION_JSON_VALUE.

+0

z bloku statycznego APPLICATION_JSON = valueOf (APPLICATION_JSON_VALUE); – dwilda