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