Google App Engine Java Standard環境に Spring Bootのテンプレートエンジン Thymeleafを適用
Google App Engine Java Standard 環境で手っ取り早くSpring Boot アプリケーションを開発する
の構成を成長させて、必要な道具をそろえていく。
この書籍によると、テンプレートエンジンとしては、Thymelear(タイムリーフ)がおすすめとのこと。この書籍にもあるように、「JSPでいいんじゃないの?」とも思ったが、ここは素直に従う。
利用するには、pom.xmlに以下を追記。
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-thymeleaf</artifactId>
- </dependency>
1.テンプレートHTMLの配置
src/main/resources/templates 配下に、テンプレート index.html を配置
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- ID:<p class="msg" th:text="${id}"></p>
- </body>
- </html>
2.コントローラー
コントローラーを記述
前回は、@RestController としたが、テンプレートエンジンを利用する場合、@Controller を利用するようだ。
とりあえず、アプリケーションからコントローラーを分離し、以下のような構成にしてみる。
api : RestController
page : Controller
2.1 Page用コントローラー
HTMLページ用のコントローラー
- パスパラメータのマッピング
- テンプレート名を文字列で返す。
- パラメータに、ModelAndViewを利用することもできる
など。
- package info.typea.page;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- @Controller
- public class PageController {
- @RequestMapping("/page/{id}")
- public String pageSample(
- @PathVariable String id,
- Model model) {
- model.addAttribute("id", id);
- return "index";
- }
- }
2.2.Api用コントローラー
最終的には、JavaScriptから、REST APIを呼び出す構成にすると思うので、分割動作確認。
- package info.typea.api;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
- @RestController
- public class ApiController {
- @GetMapping("/api/hello")
- public String hello() {
- return "Hello GAE Java std env with Spring boot !";
- }
- }
3.動作確認
ローカルで動かす。OK
GAEにデプロイし、動作確認OK!
API側も確認OK