我通过Spring MVC实现了一个REST API。以下是映射示例:
@RequestMapping(value = "/videos", method = RequestMethod.GET, headers = "Accept=application/json", produces = "application/json")
其中有很多,所以我想知道是否可以分解 headers
和produces
属性,这样我就不会必须在每个映射中指定它们,以便减轻我的代码?
最好的是自定义注释,它自动设置两个属性,例如:
@JsonRequestMapping(value = "/videos", method = RequestMethod.GET)
但我还没能实现这样的......
答案 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 { ... }