アノテーション@GetMappingと@RequestMapping(method = RequestMethod.GET)の違い


151

違いは何ですか @GetMappingとは@RequestMapping(method = RequestMethod.GET)?代わりに使用さ
れたいくつかのSpring Reactiveの例で見たこと @GetMappingがある@RequestMapping

回答:


194

@GetMapping のショートカットとして機能する合成アノテーションです @RequestMapping(method = RequestMethod.GET)

@GetMapping新しい注釈です。消費をサポート

消費オプションは次のとおりです。

消費する= "text / plain"
消費= {"text / plain"、 "application / *"}

詳細については、GetMappingアノテーションを参照してください。

または読み取り: マッピングバリアントのリクエスト

RequestMappingは消費もサポートします

メソッドレベルでのみ適用できるGetMappingと、クラスレベルおよびメソッドレベルで適用できるRequestMappingアノテーション



3
同様にサポートが消費をRequestMapping:docs.spring.io/spring/docs/current/javadoc-api/org/...
ガーボルDANI

22

あなたがここで見ることができるよう

具体的に@GetMappingは、のショートカットとして機能する合成アノテーションです@RequestMapping(method = RequestMethod.GET)

@GetMapping&の違い@RequestMapping

@GetMappingconsumesような属性をサポートします @RequestMapping


14
朗報!2017年4月の時点で、リンクしたSpring Webページで、GetMapping 「消費」と通常のRequestMapping属性をサポートするようになりました。おそらくSpringはあなたの投稿の後にそれらを追加しました。
devdanke 2017

10

@RequestMapping クラスレベルです

@GetMapping メソッドレベルです

スプリントスプリング4.3。以上が変化しました。これで、httpリクエストを処理するメソッドで@GetMappingを使用できます。クラスレベルの@RequestMapping仕様は、(メソッドレベル)@GetMappingアノテーションで改良されています

次に例を示します。

@Slf4j
@Controller
@RequestMapping("/orders")/* The @Request-Mapping annotation, when applied
                            at the class level, specifies the kind of requests 
                            that this controller handles*/  

public class OrderController {

@GetMapping("/current")/*@GetMapping paired with the classlevel
                        @RequestMapping, specifies that when an 
                        HTTP GET request is received for /order, 
                        orderForm() will be called to handle the request..*/

public String orderForm(Model model) {

model.addAttribute("order", new Order());

return "orderForm";
}
}

Spring 4.3以前は、 @RequestMapping(method=RequestMethod.GET)

クレイグ・ウォールズ著の本からの追加の読書 クレイグ・ウォールズ著の本からの追加の読書


1
@RequestMappingはメソッドにも適用できます。
ZhaoGang

はい、可能です。ただし、@ GetMappingはより簡潔で、ターゲットとするHTTPメソッドに固有です。
zee

3

短い答え:

セマンティックに違いはありません。

具体的には、@ GetMappingは、@ RequestMapping(method = RequestMethod.GET)のショートカットとして機能する合成アノテーションです

参考文献:

RequestMapping クラスレベルで使用できます。

このアノテーションは、クラスとメソッドレベルの両方で使用できます。ほとんどの場合、メソッドレベルでは、アプリケーションはHTTPメソッド固有のバリアント@ GetMapping、@ PostMapping、@ PutMapping、@ DeleteMapping、または@PatchMappingのいずれかを使用することを好みます。

一方GetMapping、メソッドにのみ適用されます:

HTTP GETリクエストを特定のハンドラメソッドにマッピングするためのアノテーション。


https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/GetMapping.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.