Spring BootでThymeleafを使おうと思うとデフォルトではThymeleaf 2.1系が使われますが、Spring Boot 1.4からは、Thymeleaf 3.0系もサポートされ自動コンフィギュレーションされます。
Thymeleaf 3.0系の適用方法
Spring Bootの公式サイトで紹介されている通り・・・・
- Thymeleaf本体 + (Thymeleaf Spring)
- Thymeleaf Layout Dialect
- Spring Security Dialect (※利用する場合のみ)
- Data Attribute Dialect (※利用する場合のみ)
- Java 8 Time API Dialect (※利用する場合のみ)
のバージョン管理用のプロパティ値を変更するだけです。以下は、投稿時点(2016/8/11)の最新バージョンを利用する際のプロパティ値の設定例です。
<properties>
<!-- ... -->
<thymeleaf.version>3.0.1.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.0.1</thymeleaf-layout-dialect.version>
<thymeleaf-extras-springsecurity4.version>3.0.0.RELEASE</thymeleaf-extras-springsecurity4.version>
<thymeleaf-extras-data-attribute.version>2.0.1</thymeleaf-extras-data-attribute.version>
<thymeleaf-extras-java8time.version>3.0.0.RELEASE</thymeleaf-extras-java8time.version>
</properties>
Thymeleaf 3.0を適用してSpring Bootを起動してみると・・・
以下のようなWARNログがでます
...
2016-08-11 11:21:11.924 WARN 56624 --- [ restartedMain] org.thymeleaf.templatemode.TemplateMode : [THYMELEAF][restartedMain] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead.
...
これは、Spring BootのデフォルトがHTML5になっているためです・・・(Spring BootのデフォはあくまでThymeleaf 2.1系なので・・・)
テンプレートモードをHTMLにする
Thymeleaf 3.0系では"HTML5"というモードが非推奨ということなので、ログメッセージどおり推奨の"HTML"に変更しましょう。テンプレートモードを変更する場合は、以下のような設定を加えるだけです
spring.thymeleaf.mode=HTML
Note: HTML5自体が非推奨というわけではない
あくまで"HTML5"というモードが非推奨になっただけで、HTML5が非推奨というわけではないので誤解しないでくださいね
http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html#full-html5-markup-support
まとめ
Thymeleaf 3.0系では、テンプレートを記載するマークアップ言語としてXHTMLじゃない普通のHTMLが利用できるようになったり、HTML系以外のモード(TEXT、JAVASCRIPT、CSS、RAW)が追加されていたりします。また、大幅なパフォーマンス改善が行われたらしいので、Thymeleaf 2系から乗り換えることを検討した方がよさげです。
テンプレートモードとしてTEXT指定すると、テキストメールを送る時のテンプレートエンジンとしてThymeleafが使えるのかな? FreeMarkerとかVelocityはもう不要!?(VelocityはSpring的に非推奨になったので使う気全くないけどw)
参考サイト
- http://masatoshitada.hatenadiary.jp/entry/2016/08/10/132137
- http://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#howto-use-thymeleaf-3
- http://www.thymeleaf.org/doc/articles/thymeleaf3migration.html
- https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-thymeleaf3