Contents
SpringBootの@Controllerとは?
まずは、公式Javadocを見てみます。
アノテーション付きのクラスが「コントローラー」(たとえば、Web コントローラー)であることを示します。
アノテーション型 Controller
このアノテーションは @Component の特殊化として機能し、クラスパススキャンを通じて実装クラスを自動検出できます。通常、RequestMapping アノテーションに基づくアノテーション付きハンドラーメソッドと組み合わせて使用されます。
SpringBootの@RestControllerとは?
まずは、公式Javadocを見てみます。
@Controller および @ResponseBody でアノテーションが付けられている便利なアノテーション。
アノテーション型 RestController
このアノテーションを保持する型は、@RequestMapping メソッドがデフォルトで @ResponseBody セマンティクスを想定するコントローラーとして扱われます。
SpringBootの@Controllerと @RestControllerの違いは?
SpringBootの@Controllerと @RestControllerはどちらを使うべき?
Thymeleafによって生成されるHTMLをレスポンスする場合は、@Controllerを使います。JSONやXMLをレスポンスするようなAPI形式の場合は、@RestControllerを使うのが適切です。
但し、実案件では@RestControllerの存在を知らずに、API形式の場合でも@Controllerを使っているケースはよくあります。