Spring Bootによるウェブアプリ開発の基礎(1)

本当はきっちり解説したいけど時間が足りないので、とりあえず動かすための最低限なポイント解説。

Gradle

Gradleはビルドツールの1つで、Androidアプリの開発でも使われるなど、メジャーになりつつある(すでにメジャーである)。

ポイント: Gradle以外にも色々あるけど、Gradle使っとけば多分大丈夫。

処理の流れ

Mvc

SpringのWeb MVCにおける処理の流れ(http://docs.spring.io/spring/docs/4.0.5.RELEASE/spring-framework-reference/html/mvc.html#mvc-servletより引用)

フロントコントローラがリクエストを適切なコントローラに渡し、コントローラが出力するデータをビュー(テンプレート)が表示するという仕組み。

ポイント: コントローラとテンプレートを用意すれば、ブラウザにページを表示させることができる。

アノテーション

クラスやメソッド、パッケージに対してメタデータとして付加情報を記入する機能(Wikipedia: アノテーションより)

大抵は「付加情報を記入する」だけではなく、アノテーションプロセッサによって様々な処理がなされる。Spring Bootでは、コントローラを作る時にアノテーションを使う等、様々なところで利用する。

ポイント: Spring Bootによるウェブアプリ開発ではアノテーションを良く使う。

コントローラの作成

  • クラスに@Controllerアノテーションをつけることで、このクラスがコントローラとして扱われる。
  • @RequestMappingアノテーションで、どのURLを対象とするかを指定する。
  • メソッドの戻り値はString型で、テンプレートのファイル名(拡張子は除く)を指定する。
  • メソッドの引数にModelMap型を加えると、テンプレートにモデルを渡すためのオブジェクトを得ることができる。addAttributeメソッドでキーと値を指定する。

ポイント: コントローラでは、URLに対応したメソッドを作る。メソッドはテンプレートを指定する。

テンプレートの作成

テンプレートエンジンとして標準ではThymeleafが使われる。

# Spring Boot 1.3.6ではThymeleaf 2.1.4(最新版ではない)が使われることに注意。

src/main/resources/templatesに作成する。

  • (Thymeleaf 2.1.4では)well-formedなXML文書でなければならないので注意する。つまり「タグは開始タグと終了タグを記述する(省略できない)」と「空要素(単独で現れるタグ、例えばhrタグ)はスラッシュをつける(例:<hr/>)」を守ればよい。
  • xmlns属性でThymeleafで使うプレフィックスを指定する。
  • th:text属性で、その要素のテキストノードに値を設定できる。
  • th:text属性では「${key}」とする。keyにはコントローラで指定したModelMapのキーを指定する。

ポイント: テンプレートでは、コントローラから送られてきたモデルをどこに表示するかをHTMLで記述する。