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年10月27日重回帰分析はディープラーニングの「細胞」だった?"ご先祖様"と"最強の進化系"のつながりを徹底解剖
山崎講師2025年10月27日機械学習の"ご先祖様"?重回帰分析が今も最強の「基礎」である理由
山崎講師2025年10月27日ディープラーニングの「常識」を疑え!相関分析が“無力”に見える理由と、それでも使うべき本当の価値
山崎講師2025年10月27日相関分析は最強の「データスカウト」!機械学習の精度を上げる”相棒”の正体とは