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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。