Spring Bootのコントローラーでの戻り値の扱いについて解説!
こんにちは。ゆうせいです。
Spring BootでWebアプリケーションを開発するとき、コントローラーのメソッドが返す値(return)の扱いについて理解することはとても重要です。
どのアノテーションを使うかによって、ブラウザに表示される内容が変わるので、しっかりと違いを押さえておきましょう!
1. @RestController を使う場合
@RestController を使用すると、メソッドの戻り値はそのままHTTPレスポンスの本文(Body)として扱われ、ブラウザに直接表示されます。
例: 文字列を返す
import org.springframework.web.bind.annotation.*;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
アクセス
http://localhost:8080/hello
ブラウザの表示
Hello, Spring Boot!
@RestController を使うと、戻り値の文字列がそのままブラウザに表示されます。
2. @Controller を使う場合
@Controller を使うと、メソッドの戻り値は 「ビューの名前」として解釈 されます。そのため、文字列がそのまま表示されるわけではなく、テンプレートファイルが必要になります。
例: ビューの名前を返す
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ViewController {
@GetMapping("/page")
public String showPage() {
return "mypage"; // "mypage.html" を表示しようとする
}
}
アクセス
http://localhost:8080/page
この場合、Spring Bootは mypage.html というテンプレートファイルを探しに行きます。
3. @ResponseBody を使う場合
@Controller を使っていても、@ResponseBody をつけると、戻り値が直接ブラウザに表示されるようになります。
例: @ResponseBody で文字列を返す
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TextController {
@GetMapping("/text")
@ResponseBody
public String getText() {
return "This is plain text.";
}
}
ブラウザの表示
This is plain text.
@ResponseBody を使うと、@Controller でも文字列を直接レスポンスとして返せるようになります。
4. まとめ
| コントローラーの種類 | 戻り値の扱い | ブラウザの表示 |
|---|---|---|
@RestController | そのままHTTPレスポンスになる | 文字列が表示される |
@Controller | ビュー(HTMLファイル)として解釈される | 文字列は表示されない(テンプレートが必要) |
@Controller + @ResponseBody | そのままHTTPレスポンスになる | 文字列が表示される |
5. 結論
@RestControllerを使えば、メソッドのreturnがそのままブラウザに表示される@Controllerだけだと、ビュー名として解釈されるので注意@ResponseBodyをつければ、@Controllerでも文字列を直接返せる
Spring Bootのコントローラーを使うときは、目的に応じて適切なアノテーションを選びましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年11月23日未経験でも迷わない!「成果が出る」新入社員研修の企画・講師スキル・評価まで徹底解説
山崎講師2025年11月23日新人クリエイターのための「生成AIと著作権」完全ガイド
山崎講師2025年11月23日【超入門】Hugging Faceで始めるAI開発!新人エンジニアが最初に触るべきTransformerの基礎と実践
山崎講師2025年11月23日新人エンジニア必見!才能よりも大切な「やり抜く力(グリット)」の鍛え方とは?