Spring Bootで簡単にルーティングを実装する方法を完全解説!Spring MVC初心者でも迷わないURLと処理の基本
新人
「Spring BootでWebアプリを作り始めたんですが、URLを入力すると画面が表示される仕組みがよく分かりません。」
先輩
「それはルーティングの仕組みを理解すると、一気に整理できますよ。」
新人
「ルーティングって言葉は聞いたことがありますが、何をしているものなんですか?」
先輩
「では、Spring BootとSpring MVCの前提で、基本から順番に見ていきましょう。」
1. ルーティングとは何か(Webアプリにおける役割)
ルーティングとは、Webアプリにおいて「どのURLにアクセスされたときに、どの処理を実行するか」を決める仕組みのことです。私たちがブラウザでURLを入力して画面を表示するとき、その裏側では必ずルーティングが動いています。
例えば、「/top」というURLにアクセスしたときにトップページを表示し、「/login」というURLにアクセスしたときにログイン画面を表示する、といった対応関係を管理するのがルーティングです。URLと処理を正しく結び付けることで、Webアプリは正しい画面を表示できるようになります。
Spring Bootを使ったWeb開発では、このルーティングをSpring MVCが担当してくれます。開発者は難しい設定を書く必要はなく、「このURLではこの処理を行う」と宣言するだけで、Webアプリが動作するようになります。
Pleiadesで作成したSpring BootプロジェクトをGradleで実行している場合でも、この考え方は同じです。開発環境に関係なく、ルーティングはWebアプリの基本中の基本となる重要な役割を持っています。
2. Spring MVCにおけるルーティングの基本的な考え方
Spring MVCにおけるルーティングは、「URL」と「コントローラのメソッド」を結び付ける仕組みとして実装されます。Spring MVCでは、コントローラクラスの中に、URLごとの処理をメソッドとして定義します。
このとき、URLとメソッドを関連付けるために使われるのが、@RequestMappingや@GetMappingといったアノテーションです。これらを使うことで、「このURLにアクセスされたら、このメソッドを実行する」というルールを分かりやすく記述できます。
画面表示を目的としたSpring MVCでは、コントローラのメソッドは最終的に画面名を返します。この画面名をもとに、HTMLテンプレートが読み込まれ、ブラウザに画面が表示されます。
以下は、非常にシンプルなルーティングの例です。
@Controller
public class HomeController {
@GetMapping("/home")
public String home() {
return "home";
}
}
このコードでは、「/home」というURLにアクセスすると、homeという画面が表示されます。ここで重要なのは、URLと処理が明確に結び付いている点です。Spring MVCのルーティングは、このように直感的で理解しやすい構造になっています。
3. なぜSpring Bootではルーティングが簡単なのか
Spring Bootでルーティングが簡単だと感じられる理由は、設定作業の多くをフレームワークが自動で行ってくれるからです。従来のWeb開発では、URLと処理を結び付けるために多くの設定ファイルを書く必要がありました。
しかし、Spring Bootでは、Pleiadesでプロジェクトを作成し、必要な依存関係をチェックするだけで、すぐにルーティングを使ったWeb開発を始めることができます。Gradleを使ったビルド設定も自動で整えられるため、初心者でも環境構築でつまずきにくくなっています。
また、@Controllerとアノテーションを付けるだけで、Spring MVCのルーティング機能が有効になります。開発者は「URLと処理をどう結び付けるか」という本質的な部分に集中できるのが、Spring Bootの大きな特徴です。
例えば、複数の画面を持つ場合でも、次のようにメソッドを追加するだけでルーティングを増やせます。
@Controller
public class PageController {
@GetMapping("/top")
public String top() {
return "top";
}
@GetMapping("/about")
public String about() {
return "about";
}
}
このように、Spring BootとSpring MVCを使えば、ルーティングは「URLとメソッドを対応させるだけ」という非常にシンプルな作業になります。Spring MVC初心者の方は、まずこの仕組みを理解することで、Webアプリ全体の構造が一気に見えてくるようになります。
4. @RequestMappingによる基本的なルーティング
@RequestMappingは、Spring MVCにおけるルーティングの基本となるアノテーションです。URLとコントローラのメソッドを結び付けるための、もっとも汎用的な仕組みだと考えると分かりやすいでしょう。
WebブラウザでURLにアクセスすると、まずHTTPリクエストが送信されます。Spring MVCはそのリクエストを受け取り、「どのURLなのか」を確認したうえで、対応する@RequestMappingが付いたメソッドを探します。そして、見つかったメソッドを実行し、画面表示用のレスポンスを返します。
初心者の方は、「URL → ルーティング → コントローラのメソッド → 画面表示」という流れを、ひとつの固定ルートとしてイメージすると理解しやすくなります。@RequestMappingは、そのルートの入口を定義する役割を担っています。
以下は、@RequestMappingを使った非常にシンプルな例です。
@Controller
public class SampleController {
@RequestMapping("/sample")
public String sample() {
return "sample";
}
}
このコードでは、「/sample」というURLにアクセスすると、sampleという画面が表示されます。HTTPメソッドの種類は細かく指定していませんが、画面表示を目的とした基本的なルーティングとしては十分です。
@RequestMappingは柔軟に使える反面、初心者のうちは「何のリクエストを受け取っているのか」が少し分かりにくくなることがあります。そのため、次に紹介する@GetMappingや@PostMappingを使い分けることで、ルーティングの意図がより明確になります。
5. @GetMappingを使ったGETリクエストのルーティング
@GetMappingは、GETリクエスト専用のルーティングを定義するためのアノテーションです。WebブラウザでURLを入力して画面を表示する場合、そのほとんどがGETリクエストになります。
そのため、Spring MVCで画面表示を学ぶ段階では、まず@GetMappingを使ったルーティングに慣れることが重要です。@GetMappingを使うことで、「このURLは画面を表示するためのアクセスである」という意図が、コード上でもはっきりします。
GETリクエストの流れも、「URL → ルーティング → コントローラのメソッド → 画面表示」という基本構造は変わりません。違いは、GETという取得目的のリクエストに限定している点です。
@Controller
public class GetController {
@GetMapping("/menu")
public String menu() {
return "menu";
}
}
この例では、「/menu」というURLにGETリクエストでアクセスすると、menuという画面が表示されます。ブラウザでURLを直接入力した場合も、この@GetMappingが処理を担当します。
Spring MVC初心者の方は、「画面を表示したいURLは、まず@GetMappingで定義する」と覚えておくと、ルーティング設計で迷いにくくなります。Spring MVCのルーティング方法を理解するうえで、@GetMappingは中心的な存在です。
6. @PostMappingを使ったPOSTリクエストのルーティング(概要)
@PostMappingは、POSTリクエストを受け取るためのルーティングを定義するアノテーションです。GETリクエストとの大きな違いは、「情報を送信する」という目的を持っている点にあります。
画面表示が目的のGETリクエストに対して、POSTリクエストは主にフォーム送信などで使われます。ただし、Spring MVC初心者の段階では、POSTの細かい仕組みまで理解する必要はありません。「GETとは役割が違うルーティングがある」という認識を持つだけで十分です。
POSTリクエストでも、ルーティングの基本構造は同じです。URLに対してPOSTリクエストが送られ、@PostMappingが付いたメソッドが呼び出され、その結果として次の画面が表示されます。
@Controller
public class PostController {
@PostMapping("/submit")
public String submit() {
return "result";
}
}
この例では、「/submit」というURLにPOSTリクエストが送られると、resultという画面が表示されます。GETとPOSTでURLが同じでも、どのアノテーションが付いているかによって、呼び出されるメソッドが変わります。
Spring MVCのルーティングを学ぶうえでは、「@RequestMappingは基本形」「@GetMappingは画面表示」「@PostMappingは送信処理」という役割分担を、まずはざっくり理解しておくことが大切です。この整理ができると、Spring Bootでのルーティング設計が一気に分かりやすくなります。
7. 初心者がルーティングで混乱しやすいポイント
Spring BootとSpring MVCでルーティングを学び始めた初心者が、最初につまずきやすいのは「URLとメソッドの関係が見えにくい」という点です。コードを書いていると、いつの間にかURLと処理が自動で結び付いているように感じてしまい、裏側で何が起きているのか分からなくなりがちです。
特に多いのが、「このURLにアクセスしているのに、なぜこのメソッドが呼ばれるのか分からない」という疑問です。これは、ルーティングを単なる記述ルールとして覚えてしまい、仕組みとして理解できていないことが原因です。
Spring MVCのルーティングは、決して複雑なものではありません。基本は常に、「URLにアクセスされた → 対応するアノテーションが付いたメソッドを探す → そのメソッドを実行する」という流れです。この流れを意識せずにコードだけを追ってしまうと、混乱しやすくなります。
例えば、次のようなコードがある場合を考えてみましょう。
@Controller
public class ConfusionController {
@GetMapping("/info")
public String info() {
return "info";
}
}
この場合、「/info」というURLとinfoメソッドは一対一で対応しています。しかし、初心者のうちは「なぜクラス名ではなくメソッドが呼ばれるのか」「戻り値の文字列はどこに使われているのか」といった点で混乱しがちです。
ルーティングで大切なのは、「URLとメソッドを結び付けているのはアノテーションである」という事実を常に意識することです。クラス名やメソッド名は自由に付けられますが、URLとの対応関係を決めているのは@GetMappingや@RequestMappingといったアノテーションです。
Spring Bootのルーティング初心者は、「URLを見る → 対応するアノテーションを探す → そのメソッドが実行される」という順番でコードを読む癖を付けると、混乱が一気に減っていきます。
8. URL設計とルーティングを考えるときの基本的な考え方
Spring MVCでルーティングを設計するときに重要なのは、「URLは利用者の入口である」という考え方です。Webブラウザを使う人は、URLを見て「どんな画面が表示されるのか」を直感的に判断します。
そのため、URLとルーティングは、技術的な都合ではなく、「どの画面に進むための入口なのか」という視点で考えることが大切です。URL設計が整理されていると、ルーティングも自然と分かりやすくなります。
例えば、トップページや案内ページを表示する場合は、次のように画面の役割がURLから想像できる形が理想です。
@Controller
public class SiteController {
@GetMapping("/top")
public String top() {
return "top";
}
@GetMapping("/contact")
public String contact() {
return "contact";
}
}
この例では、「/top」はトップページ、「/contact」は問い合わせ画面という役割がURLから自然に読み取れます。ルーティングとは、このようにURLと画面の意味を結び付ける作業でもあります。
初心者のうちは、「URLは画面の名前」「ルーティングは画面への案内係」と考えると理解しやすくなります。URLを先に決め、そのURLで何を表示したいのかを考えてから、対応するメソッドを書くという順番がおすすめです。
Spring MVCのルーティングは、URL設計が整理されていればいるほど、コードも読みやすくなります。逆に、URLに一貫性がないと、どのメソッドがどの画面を表示するのか分かりにくくなってしまいます。
Spring Bootでのルーティング設計では、「URLを見ただけで、表示される画面が想像できるか」という点を意識することが、長く使えるWebアプリを作るための基本になります。
9. ルーティング理解の次に学ぶべきSpring MVCの要素
Spring Bootでルーティングの基本を理解できるようになると、Webアプリの全体像が少しずつ見えてきます。URLとコントローラの関係が整理できたら、次に意識したいのは「リクエストと画面がどのようにつながっているか」という点です。
ルーティングは、あくまで入口の案内役です。その先では、HTTPリクエストの情報を受け取り、画面にデータを渡すといった処理が行われています。とはいえ、この段階で細かいHTTPの知識を詰め込む必要はありません。
まずは、「URLにアクセスすると、コントローラが呼ばれ、画面が表示される」という一連の流れを、安心して説明できるようになることが大切です。そのうえで、次のような要素を少しずつ学んでいくと、理解が自然につながります。
例えば、コントローラから画面へ情報を渡す仕組みや、リクエストに含まれる値を受け取る方法などです。これらはすべて、ルーティングで結び付けたURLの先で使われる技術です。
@Controller
public class NextStepController {
@GetMapping("/welcome")
public String welcome() {
return "welcome";
}
}
このようなシンプルなルーティングを起点として、「なぜこの画面が表示されるのか」「この処理はどこで行われているのか」を一つずつ確認していくことが、Spring MVC理解への近道です。
Spring Bootのルーティングを正しく理解していれば、その後に学ぶHTTPリクエストや画面連携の仕組みも、点ではなく線として理解できるようになります。まずはルーティングという土台をしっかり固めることが、Spring MVC初心者にとって最も重要なステップです。