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
