Spring MVCの@RequestMappingとは?@GetMapping/@PostMappingとの違いを徹底解説
新人
「Spring Bootで画面を表示しようとしたら、@RequestMappingって出てきたんですが、正直何をしているのか分からなくて……」
先輩
「Spring MVCでは、URLと処理を結びつけるのがとても重要なんだ。その役割を担っているのが@RequestMappingだよ。」
新人
「URLと処理を結びつける、というのがまだピンと来なくて……」
先輩
「大丈夫。まずは基本の考え方から順番に整理していこう。」
1. Spring MVCの@RequestMappingとは何か(基本的な役割)
Spring MVCの@RequestMappingとは、特定のURLにアクセスされたときに、どのメソッドを実行するかを指定するためのアノテーションです。 Spring Bootでは、ブラウザからのリクエストを受け取る入口として、コントローラが使われます。 @RequestMappingは、そのコントローラの中で「このURLが来たら、この処理を動かす」という対応付けを行います。
Spring Boot初心者のうちは、 「なぜURLを書くだけで処理が動くのか」 と不思議に感じることが多いかもしれません。 しかし、裏側ではSpring MVCが@RequestMappingを読み取り、 リクエストとメソッドを自動的につないでいます。
@RequestMappingは、クラスやメソッドに付けて使うことができ、 画面表示やフォーム送信など、さまざまな場面で利用されます。 Spring MVCを理解するうえで、最初に覚えておきたい基本中の基本と言える存在です。
@Controller
public class SampleController {
@RequestMapping("/sample")
public String sample() {
return "sample";
}
}
この例では、「/sample」というURLにアクセスすると、 sampleメソッドが実行され、画面が表示される仕組みになっています。 Spring Boot初心者は、 「URLとメソッドが結びついている」 という点をまず意識すると理解しやすくなります。
2. URLとメソッドを結びつける仕組みをイメージで説明
Spring MVCでは、ブラウザから送られてきたURLをもとに、 どの処理を実行するかを判断します。 このときの目印として使われるのが@RequestMappingです。
イメージとしては、 「URL=呼び出しボタン」 「メソッド=実行される処理」 のように考えると分かりやすくなります。 ユーザーがURLにアクセスすると、 Spring MVCが@RequestMappingを確認し、 対応するメソッドを探して実行します。
Spring Boot初心者が混乱しやすいのは、 この処理が自動で行われている点です。 自分でメソッドを呼び出していないのに、 処理が動いているように見えるため、 最初は戸惑うことが多くなります。
しかし、実際には、 「URL → @RequestMapping → メソッド」 という流れが常に存在しています。 この流れを頭の中でイメージできるようになると、 Spring MVCのコードが一気に読みやすくなります。
@Controller
public class UrlController {
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
この場合、「/hello」にアクセスすると、 helloメソッドが呼び出されます。 URLが変われば、呼び出されるメソッドも変わる。 それを管理しているのが@RequestMappingだと理解しておきましょう。
3. Spring Boot初心者が最初につまずきやすいポイント
Spring Boot初心者が@RequestMappingでつまずきやすいポイントとして、 「URLが正しいのに画面が表示されない」 というケースがよくあります。 これは、URLと@RequestMappingの指定が一致していない場合に起こります。
たとえば、ブラウザで入力したURLと、 コントローラに書いた@RequestMappingの値が、 少しでも違っていると処理は実行されません。 スラッシュの付け忘れや、 文字の打ち間違いも原因になりやすい点です。
また、Spring MVCでは、 @Controllerが付いたクラスだけが、 リクエストを受け取る対象になります。 クラスに@Controllerが付いていないと、 @RequestMappingを書いても無視されてしまいます。
Spring Boot初心者のうちは、 「URL」「@RequestMapping」「@Controller」 の三点が正しくそろっているかを確認する習慣を付けることが大切です。 この基本を押さえるだけで、 多くのエラーや混乱を防ぐことができます。
@RequestMappingは、 Spring MVCの入り口とも言える重要な存在です。 まずは難しく考えすぎず、 「URLと処理をつなぐための目印」 として理解するところから始めましょう。
4. @RequestMappingの基本的な使い方
ここからは、Spring MVCにおける@RequestMappingの 基本的な使い方を、もう少し具体的に見ていきます。 Spring Boot初心者の段階では、 「URLが来たら、このメソッドが動く」 という対応関係を理解することが最優先です。
@RequestMappingは、 メソッドの上に付けることで、 特定のURLに対する処理を定義できます。 ブラウザからそのURLにアクセスすると、 Spring MVCが自動的に該当メソッドを呼び出します。
このとき重要なのは、 URLにアクセスするという行為自体が 「リクエスト」としてSpringに届いている点です。 Spring MVCは、 そのリクエストを見て、 「どのメソッドに渡せばよいか」 を@RequestMappingを使って判断しています。
@Controller
public class BasicController {
@RequestMapping("/basic")
public String basic() {
return "basic";
}
}
この例では、 「/basic」というURLへのリクエストが来た場合に、 basicメソッドが実行されます。 Spring Boot初心者は、 「URLとメソッドが一対一で結びついている」 というイメージをまず持つと理解しやすくなります。
@RequestMappingは、 URLの指定だけでも利用できますが、 実際には「どんな種類のリクエストか」 という情報も関係しています。 その点を意識すると、 次に紹介する@GetMappingや@PostMappingの役割が 自然につながってきます。
5. @GetMappingと@PostMappingの役割と特徴
Spring MVCでは、 ブラウザから送られてくるリクエストに 種類があります。 代表的なのが、 画面を表示するためのリクエストと、 フォーム送信などでデータを送るリクエストです。
Spring Boot初心者向けに簡単に言うと、 「画面を表示したいとき」と 「データを送信したいとき」 では、リクエストの性質が異なります。 その違いを分かりやすく扱うために用意されているのが、 @GetMappingと@PostMappingです。
@GetMappingは、 主に画面表示やページ遷移のために使われます。 ブラウザのアドレスバーにURLを入力して 画面を開くときのリクエストは、 基本的に@GetMappingに対応します。
@Controller
public class GetController {
@GetMapping("/view")
public String view() {
return "view";
}
}
一方で@PostMappingは、 フォーム送信など、 ユーザーが入力したデータを サーバーに送るときに使われます。 ボタンを押して処理を実行するような場面が イメージしやすいでしょう。
@Controller
public class PostController {
@PostMapping("/submit")
public String submit() {
return "result";
}
}
Spring MVCでは、 同じURLであっても、 リクエストの種類が違えば、 別のメソッドに処理を分けることができます。 これにより、 画面表示と処理実行を 分かりやすく整理できるようになります。
6. @RequestMappingと@GetMapping/@PostMappingの違い
ここまで理解できると、 「@RequestMappingと@GetMappingや@PostMappingは 何が違うのか」 という疑問が自然に出てきます。 Spring Boot初心者が混乱しやすいポイントでもあります。
結論から言うと、 @GetMappingや@PostMappingは、 @RequestMappingを 分かりやすくした専用の書き方です。 役割そのものは同じで、 URLとメソッドを結びつけるために使われます。
@RequestMappingは、 一つのアノテーションで 幅広い指定ができる反面、 初心者には少し分かりにくく感じられることがあります。 どんなリクエストが来るのかを 自分で意識する必要があるからです。
その点、 @GetMappingや@PostMappingは、 名前の時点で 「どんなリクエスト用か」 が分かるようになっています。 Spring MVC初心者にとっては、 処理の意図が読み取りやすく、 コードの理解もしやすくなります。
実務でも、 単純な画面表示には@GetMapping、 フォーム送信には@PostMappingを使う、 という書き方が主流になっています。 @RequestMappingは、 それらの基本となる考え方を理解するための 土台だと捉えるとよいでしょう。
Spring Boot初心者の段階では、 「どのURLが、どのリクエストで、 どのメソッドに届くのか」 を意識しながらコードを読むことが重要です。 その視点を持つことで、 Spring MVCの仕組みが 一気に分かりやすくなっていきます。
7. @RequestMappingを使うメリットと注意点
@RequestMappingを使う最大のメリットは、 URLと処理の対応関係を一か所でまとめて管理できる 点にあります。 Spring MVCでは、 コントローラがリクエスト処理の中心になるため、 URL設計と処理内容を整理しやすい構造が重要です。
@RequestMappingは、 クラス全体やメソッド単位で指定できるため、 URL構成を柔軟に設計できます。 そのため、 Spring Boot初心者が最初に 「URLと処理の関係」を理解するには、 とても分かりやすいアノテーションです。
一方で注意点もあります。 @RequestMappingは、 リクエストの種類を意識せずに使える反面、 「どんな操作なのか」 がコードから読み取りにくくなることがあります。 画面表示なのか、 データ送信なのかが ひと目で分からない場合があるのです。
そのため実務では、 @RequestMappingだけに頼るのではなく、 役割がはっきりしている @GetMappingや@PostMappingを使うことで、 コードの意図を明確にするケースが多くなります。 Spring MVC初心者のうちは、 「便利だが使いどころを考える必要がある」 という点を意識しておくとよいでしょう。
8. よくあるミスとURLがマッピングされない原因
Spring Boot初心者が最も戸惑いやすいのが、 「URLにアクセスしているのに処理が実行されない」 という状況です。 この原因の多くは、 @RequestMappingや@GetMappingの指定ミスにあります。
代表的なミスの一つが、 URLの書き間違いです。 スラッシュの有無や文字の違いなど、 人の目では気付きにくい差でも、 Spring MVCでは完全に別のURLとして扱われます。 そのため、 ブラウザのURLとアノテーションの値が 完全に一致しているかを必ず確認する必要があります。
@Controller
public class MistakeController {
@RequestMapping("/mistake")
public String mistake() {
return "mistake";
}
}
この場合、 「/mistake」にアクセスしない限り、 メソッドは呼ばれません。 「/Mistake」や「/mistake/」では 画面が表示されない点に注意が必要です。
もう一つ多いのが、 リクエストの種類が合っていないケースです。 画面表示用のURLに対して @PostMappingを使っていると、 ブラウザからの通常アクセスでは 処理が呼ばれません。 Spring MVCでは、 URLだけでなく リクエストの種類も重要な判断材料になります。
9. 実務での使い分けと学習時の考え方
実務のSpring MVC開発では、 @RequestMappingよりも @GetMappingや@PostMappingが 多く使われる傾向があります。 その理由は、 コードを見ただけで 処理の目的が分かりやすくなるからです。
たとえば、 画面を表示する処理であれば@GetMapping、 フォーム送信などの処理であれば@PostMapping、 というように役割を明確に分けることで、 Spring Boot初心者でも コードの流れを追いやすくなります。
@Controller
public class PracticalController {
@GetMapping("/input")
public String input() {
return "input";
}
@PostMapping("/input")
public String submit() {
return "result";
}
}
このように、 同じURLでもリクエストの種類ごとに メソッドを分けることで、 画面表示と処理実行を 明確に整理できます。 これは実務で非常によく使われる書き方です。
学習段階では、 まず@RequestMappingで 「URLとメソッドが結びつく仕組み」 を理解することが大切です。 そのうえで、 @GetMappingや@PostMappingを使うと、 Spring MVCの設計意図が 自然と見えてくるようになります。
Spring Boot初心者のうちは、 「どのURLが、どのリクエストで、 どのメソッドに届くのか」 を常に意識してコードを書くことが、 上達への近道になります。