記述方法
✅ どちらが新しいか?
Spring Boot では、return "テンプレート名"
のほうが新しく、推奨される記法 です。
理由は、コードがシンプルで可読性が高い ためです。
Spring Framework(Spring MVC)の 古いバージョンでは ModelAndView
が一般的 でしたが、
Spring Boot では @Controller
と @RequestMapping
(@GetMapping
/ @PostMapping
)を使うのが主流になっています。
✅ どちらがベスト?
① return "テンプレート名"
を使う方法(推奨)
これは、Spring Boot で一般的な書き方 です。
@Controller
@RequestMapping("/example")
public class ExampleController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Thymeleaf!");
return "hello"; // `src/main/resources/templates/hello.html` が表示される
}
}
Java- メリット
- シンプルで直感的(コードが短い)
- Spring Boot の標準的な書き方
- 可読性が高い
Model
を使ってデータをテンプレートに渡せる
- デメリット
- リダイレクトをするときは
redirect:/path
を手動で書く必要がある
- リダイレクトをするときは
② ModelAndView
を使う方法(古いが場合によっては有用)
ModelAndView
は Spring MVC の古いスタイル ですが、
以下のように ビュー名とデータをまとめて管理できる というメリットがあります。
@Controller
@RequestMapping("/example")
public class ExampleController {
@GetMapping("/hello")
public ModelAndView hello() {
ModelAndView mav = new ModelAndView("hello"); // `hello.html` を表示
mav.addObject("message", "Hello, Thymeleaf!");
return mav;
}
}
Java- メリット
- ビュー名とデータを1つのオブジェクトにまとめられる
- リダイレクト時も
mav.setViewName("redirect:/path")
で統一できる - Interceptor などと組み合わせると便利
- デメリット
- コードが長くなる
- Spring Boot ではあまり使われない
- ModelAndView を明示的に new する必要があるため、冗長になりやすい
✅ どちらを使うべきか?
方法 | おすすめ度 | 使いやすさ | 主な用途 |
---|---|---|---|
return "テンプレート名" (Model を使用) | ⭐⭐⭐⭐(推奨) | シンプル | 一般的な Spring Boot アプリ |
ModelAndView を使用 | ⭐⭐(古い) | 冗長になりやすい | 既存の Spring MVC アプリ、Interceptor との組み合わせ |
基本的には return "テンプレート名"
を使うのがベスト!
どうしても ModelAndView
が必要なケース以外は、新しい記法を使うのが良い。
Spring Boot で Thymeleaf などのテンプレートエンジンを使う場合、
ModelAndView
を使う方法return "テンプレート名"
で返す方法の 2つの記述方法 があります。