在本文中,我们将讨论 Spring 4.3。引入了 @RequestMapping 的特定于 HTTP 方法的快捷方式变体。 Spring RequestMapping 新的 Shortcut Annotations 是**@GetMapping**、@PostMapping、@PutMapping、@DeleteMapping、和@PatchMapping。
通常,如果我们想使用传统的 @RequestMapping 注解来实现 URL 处理程序,它会是这样的:
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
新方法可以将其简化为:
@GetMapping("/get/{id}")
Spring 当前支持五种类型的内置快捷方式注解,用于处理不同类型的 HTTP 请求。
从命名约定可以看出,每个注解都是为了处理各自传入的请求方法类型,即*@GetMapping用于处理GET类型的请求方法,@PostMapping用于处理POST*类型请求方法等
上述所有注解都已在内部使用 @RequestMapping 以及 method 元素中的相应值进行了注解。
例如,如果我们查看** **@PostMapping注解的源代码,我们可以看到它已经通过以下方式注解了 *RequestMethod.POST *:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
method = {RequestMethod.POST}
)
public @interface PostMapping {
// Default Inbuilt Code
}
所有其他注解都以相同的方式创建。 @GetMapping 用 RequestMethod.GET 注解,@PutMapping 用 RequestMethod.PUT, 等注解。
注解的完整源代码可在 here 中找到。
### 执行
@ResponseBody
@GetMapping(value = "/employee/{id}")
public Employee getEmployeeById(@PathVariable Long id)
{
return employeeRepository.findById(id).get();
}
@PostMapping(value = "/employee")
public Employee createEmployee(@RequestBody Employee employee)
{
return employeeRepository.save(employee);
}
@PutMapping(value = "/employee")
public Employee updateEmployee(@RequestBody Employee employee)
{
return employeeRepository.existsById(employee.getId()) ? employeeRepository.save(employee) : null;
}
@DeleteMapping(value = "/employee/{id}")
public void deleteEmployee(@PathVariable Long id)
{
employeeRepository.deleteById(id);
}
@PatchMapping("/patch")
public @ResponseBody ResponseEntity<String> patch() {
return new ResponseEntity<String>("PATCH Response", HttpStatus.OK);
}
我们使用了必要的注解来处理正确的传入 HTTP 方法。 @GetMapping 处理“/get”请求 URI,@PostMapping 处理“/post”请求 URI。等等。
如果我们必须处理任何 URL 路径变量,我们可以简单地用更少的方式来处理,我们以前使用 @RequestMapping.
代码示例在 Github 上可用
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.dailycodebuffer.com/spring-requestmapping-new-annotations/
内容来源于网络,如有侵权,请联系作者删除!