'APPLICATION_JSON'和'APPLICATION_JSON_VALUE'之间的区别

27

我是spring开发新手,想知道MediaType.APPLICATION_JSON_VALUEMediaType.APPLICATION_JSON之间的区别。

我认为它们都代表相同的application/json内容类型,但如果我使用MediaType.APPLICATION_JSON,编译器会显示错误提示让我在我的rest控制器中添加@Controller@ResponseBody注释。什么时候该使用MediaType.APPLICATION_JSON

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

29
引用javadoc, MediaType.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

静态块 APPLICATION_JSON = valueOf(APPLICATION_JSON_VALUE); - dwilda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接