2016-07-27 54 views
5

我是春季開發新手,想知道 MediaType.APPLICATION_JSON_VALUEMediaType.APPLICATION_JSON之間的區別是什麼?'APPLICATION_JSON'和'APPLICATION_JSON_VALUE'之間的區別

都在我的思想是代表相同application/json內容類型,但如果我把MediaType.APPLICATION_JSON一些編譯器錯誤顯示@controller@ResponseBody註釋添加到我的休息控制器以及何時使用MediaType.APPLICATION_JSON

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

回答

7

引述javadocMediaType.APPLICATION_JSON是一個「application/json衆恆媒體類型」,而MediaType.APPLICATION_JSON_VALUE是「字符串相當於MediaType.APPLICATION_JSON」。

Java註釋上的屬性只能是一組有限的類型之一。這可以防止MediaType被用作註釋屬性。爲了克服這個問題,使用String代替MediaType的各種String常數,包括MediaType.APPLICATION_JSON_VALUE

在註釋之外,如果要引用媒體類型,則應使用更強類型的MediaType而不是傳遞可能實際上可能不是媒體類型的String。因此,例如,您將使用MediaType.APPLICATION_JSON而不是MediaType.APPLICATION_JSON_VALUE

+0

from static block APPLICATION_JSON = valueOf(APPLICATION_JSON_VALUE); – dwilda