タイトル: テンプレートエンジン
本稿は Spring Framework / Spring Boot で利用するテンプレートエンジンについての記事です。コントローラから渡したモデル値を HTML に埋め込み、ブラウザに返すためのライブラリを扱います。
子ページからテンプレートエンジンを選択してください。
本ページの子ページ
- Thymeleaf — Spring Boot の標準的な選択肢。HTML として開ける文法
テンプレートエンジンとは
サーバーが計算した値を、決められた構文で HTML テンプレートに埋め込み、最終的な HTML を生成するライブラリです。コントローラからは値だけを渡し、見た目はテンプレート側に閉じ込めることで、ロジックとビューの分離を実現します。
Spring Bootで使える主なテンプレートエンジン
| テンプレートエンジン | 拡張子 | 位置づけ |
|---|---|---|
| Thymeleaf | .html | Spring Boot の事実上の標準。HTML として開けるので デザイナとの分業がしやすい |
| FreeMarker | .ftl / .ftlh | 古くから使われる汎用テンプレート。文法は ${var} 等 |
| Groovy Templates | .tpl | Groovy ベース。Spring Boot 公式サポート |
| Mustache | .mustache | 「ロジックレス」を志向。複数言語で同じテンプレートが使える |
| JSP | .jsp | JSP。Spring Boot では非推奨 (実行可能 jar との相性が悪い) |
| Velocity | .vm | 古い案件で見かける。Spring Boot 公式サポートからは外れた |
選定の観点
- Spring Boot 新規開発 → Thymeleaf が無難。公式サポートが厚い
- 静的HTMLとしてプレビューしたい → Thymeleaf (HTML 自体がテンプレートとして成立)
- 軽量・ロジックを書かせたくない → Mustache
- 既存資産が JSP / Velocity → そのまま運用するか、段階的に Thymeleaf へ移行
- SPA + REST API 構成 → テンプレートエンジンは使わず、フロントは Vue/React 等で別管理
典型的な使い方 (Thymeleaf 例)
build.gradle
|
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' |
コントローラ
|
@Controller |
テンプレート (templates/hello.html)
|
<!DOCTYPE html> |
注意点
- テンプレートは
src/main/resources/templates/配下に置くのが Spring Boot の既定 - 開発中は
spring.thymeleaf.cache=falseでホットリロード可能 - 本番ではキャッシュ有効のままで運用 (上記を
trueに) - テンプレート内でのSQL 構築や重い処理は禁物。ロジックはサービス層へ
- 外部入力をそのまま出力する場合はXSSエスケープが標準で効いていることを確認 (
th:textはエスケープ、th:utextはエスケープなし)
関連
- 親カテゴリ: Spring Framework
- 子ページ: Thymeleaf
- 関連: JSP