自动为我的@RequestMapping添加“headers”和“produce”属性

时间:2014-07-25 07:36:19

标签: java json spring rest spring-mvc

我通过Spring MVC实现了一个REST API。以下是映射示例:

@RequestMapping(value = "/videos", method = RequestMethod.GET, headers = "Accept=application/json", produces = "application/json")

其中有很多,所以我想知道是否可以分解 headersproduces属性,这样我就不会必须在每个映射中指定它们,以便减轻我的代码?

最好的是自定义注释,它自动设置两个属性,例如:

@JsonRequestMapping(value = "/videos", method = RequestMethod.GET)

但我还没能实现这样的......

1 个答案:

答案 0 :(得分:2)

您也可以将@RequestMapping放在方法旁边的类上(请参阅reference guide)。如果您希望全局可用属性在类上放置@RequestMapping,则会将其与方法上的属性合并。

@Controller
@RequestMapping(headers = "Accept=application/json", produces = "application/json")
public class YourController { ... }

然后你的方法只包含方法和网址。

@RequestMapping(value="/videos", method=RequestMethod.GET)
public Object someMethod(...) { ... }

您还可以查看@RestController,因为它还会为您的控制器配置一些默认值。就像你的方法不再需要@ResponseBody一样。

@RestController
public class YourController { ... }