https://blog.csdn.net/magi1201/article/details/82226289(copy)
最近學習看一些代碼,發現對於發送請求這件事,有的地方用@RequestMapping,有的地方用@PostMapping,為了搞清楚區別,特意查了下spring 源代碼,現在特此記錄下。
@GetMapping用於將HTTP get請求映射到特定處理程序的方法注解
具體來說,@GetMapping是一個組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫。
@PostMapping用於將HTTP post請求映射到特定處理程序的方法注解
具體來說,@PostMapping是一個組合注解,是@RequestMapping(method = RequestMethod.POST)的縮寫。
下面我們來看下@GetMapping的源碼,可以對上面的兩句釋義給予充分的支撐。
/** * Annotation for mapping HTTP {@code GET} requests onto specific handler * methods. * * <p>Specifically, {@code @GetMapping} is a <em>composed annotation</em> that * acts as a shortcut for {@code @RequestMapping(method = RequestMethod.GET)}. * * * @author Sam Brannen * @since 4.3 * @see PostMapping * @see PutMapping * @see DeleteMapping * @see PatchMapping * @see RequestMapping */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @RequestMapping(method = RequestMethod.GET) public @interface GetMapping { /** * Alias for {@link RequestMapping#name}. */ @AliasFor(annotation = RequestMapping.class) String name() default ""; ... }
上面代碼中,最關鍵的是 @RequestMapping(method = RequestMethod.GET),這行代碼即說明@GetMapping就是@RequestMapping附加了請求方法。同時,可以看到@GetMapping這個注解 是spring4.3版本引入,同時引入的還有@PostMapping、@PutMapping、@DeleteMapping和@PatchMapping,一共5個注解。
所以,一般情況下用@RequestMapping(method = RequestMethod. XXXX)即可。