WebアプリケーションにおけるHTMLビューの技術といえば、JSPやTilesなどが有名ですが、
Spring Bootでは大体の方がThymeleaf を使っているのではないでしょうか。

Spring Boot 2.0リリースに伴い、サードパーティライブラリ群もアップグレードが行われましたが
今回はThymeleaf 3を紹介いたします。

知らない方のために、Thymeleaf の特徴を簡潔に説明しますと、
・HTMLなどのテンプレートエンジンでSprint BootではJSPの代わりに標準的に使われている
・Thymeleafは変数部分を属性値として記述するため、ブラウザで表示してもコード的な表示が行われない(ナチュラルテンプレーティング)
※詳細はこちら

HTML(テンプレート)の例(変数nameには、"フォアフロンティア 太郎"が設定)

<span th:text="${name}">サンプル</span>です。

HTMLファイルをダブルクリックしてそのまま表示(thはHTMLの属性として解釈されずにそのまま記述内容が表示される)
<span>サンプル</span>です。

Webアプリケーション経由でページ表示(Thymeleafが変数値の内容でタグBody部を書き換えて表示している)
<span>フォアフロンティア 太郎</span>です。

このようにナチュラルテンプレーティングができることが他のテンプレートにはない最大の利点だと思っています。


◆Thymeleaf 3の特徴(Thymeleaf 2からの変更点で主に使われるものを抜粋)

 

・Template modes
 次のテンプレートのモードが選択可能となり、HTMLやXMLじゃなくても使用できるようになりました。
 HTML
 XML
 TEXT
 JAVASCRIPT
 CSS
 RAW

 CSS、JAVASCRIPTなどでは以下のようなプレーンテキストを生成するため、以下のような構文が追加されたようです。
 以下は変数itemsを繰り返し、箇条書きでitemを表示( < >ではなく、[ ]を使用する)
 [# th:each="item : ${items}"]
   - [# th:utext="${item}" /]
 [/]


・インライン化メカニズムの改良
 Thymeleaf 2:<p>本日は、<th:block th:utext="${weather}"></th:block>なり</p>
 ↓
 Thymeleaf 3:<p>本日は、[[${weather}]]なり</p>

・The No-Operation token
 何もしないオぺーションの導入
 
 何それと思うかもしれませんが、以下のuser.nameが何も設定されていない場合、何も処理がおこなわず"ユーザ名は未入力"が表示されます
 <span th:text="${user.name} ?: _">ユーザ名は未入力</span>

※詳細はこちら
 

他にも多数変更点はありますが、今回はここまで。

3月にSpring Boot 2.0がリリースされました。

 

4年ぶりのメジャーリリースということもあり、多数の機能が加わっております。

 

ハイライトは以下の通り!

・A Java 8 baseline, and Java 9 support.
・Reactive web programming support with Spring WebFlux/WebFlux.fn.
・Auto-configuration and starter POMs for reactive Spring Data Cassandra, MongoDB, Couchbase and Redis.
・Support for embedded Netty.
・HTTP/2 for Tomcat, Undertow and Jetty.
・Kotlin support.
・A brand new actuator architecture, with support for Spring MVC, WebFlux and Jersey.
・Micrometer based metrics with exporters for Atlas, Datadog, Ganglia, Graphite, Influx, JMX, New Relic, Prometheus, SignalFx, StatsD and Wavefront.
・Quartz scheduler support.
・Greatly simplified security auto-configuration.

※リリースノートはこちら

 

個人的に気になるところとしては、

Java 8/9、Kotlinなどのサポート

サードパーティライブラリのアップグレード(Tomcat 8.5、Thymeleaf 3に対応)

新機能としては、リアクティブプログラミングである、Spring WebFlux & WebFlux.fnが対応

が行われことではないでしょうか。

 

Spring WebFlux & WebFlux.fnは、Spring Framework 5.0で導入機能ですが、

興味があるかたは一読して頂いた方が良いかと思います。

※Spring WebFlux & WebFlux.fnに関する詳細はこちら

 

それぞれの詳細については、また後日!

4月になり、暖かくなってきました。

 

さて、今月の帰社日は、『炙り酒場 縁 本郷三丁目店』。

比較的低価格で満足できるお店ということで、過去に何度もお世話になってます。

焼き魚が非常に美味しいお店です。

 

鮭ハラス焼き。

 

刺身盛り合わせ。

 

季節外れですが、鍋料理。

 

4月後半に転職サイト(リクナビ、Findjob!)に掲載しますので、興味があれば応募して下さい!