@Controller 文件相關 @RequestMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping


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)即可。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM