下面是默认处理方法的示例:
@RestController @RequestMapping("/home") public class IndexController { @RequestMapping() String default () { return "This is a default method for the class"; } }在这段代码中,向 /home 发起的一个请求将会由 default() 来处理,因为注解并没有指定任何值。
@RequestMapping 快捷方式
Spring 4.3 引入了方法级注解的变体,也被叫做 @RequestMapping 的组合注解。组合注解可以更好的表达被注解方法的语义。它们所扮演的角色就是针对 @RequestMapping 的封装,而且成了定义端点的标准方法。
例如,@GetMapping 是一个组合注解,它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。
方法级别的注解变体有如下几个:
如下代码展示了如何使用组合注解:
@RestController @RequestMapping("/home") public class IndexController { @GetMapping("/person") public @ResponseBody ResponseEntity < String > getPerson() { return new ResponseEntity < String > ("Response from GET", HttpStatus.OK); } @GetMapping("/person/{id}") public @ResponseBody ResponseEntity < String > getPersonById(@PathVariable String id) { return new ResponseEntity < String > ("Response from GET with id " + id, HttpStatus.OK); } @PostMapping("/person") public @ResponseBody ResponseEntity < String > postPerson() { return new ResponseEntity < String > ("Response from POST method", HttpStatus.OK); } @PutMapping("/person") public @ResponseBody ResponseEntity < String > putPerson() { return new ResponseEntity < String > ("Response from PUT method", HttpStatus.OK); } @DeleteMapping("/person") public @ResponseBody ResponseEntity < String > deletePerson() { return new ResponseEntity < String > ("Response from DELETE method", HttpStatus.OK); } @PatchMapping("/person") public @ResponseBody ResponseEntity < String > patchPerson() { return new ResponseEntity < String > ("Response from PATCH method", HttpStatus.OK); } }在这段代码中,每一个处理方法都使用 @RequestMapping 的组合变体进行了注解。尽管每个变体都可以使用带有方法属性的 @RequestMapping 注解来互换实现, 但组合变体仍然是一种最佳的实践 — 这主要是因为组合注解减少了在应用程序上要配置的元数据,并且代码也更易读。
@RequestMapping 总结
如你在本文中所看到的,@RequestMapping 注解是非常灵活的。你可以使用该注解配置 Spring MVC 来处理大量的场景用例。它可以被用来在 Spring MVC 中配置传统的网页请求,也可以是 REST 风格的 Web 服务。
英文原文: Using the Spring @RequestMapping Annotation