気が向いたらなんか書く

そんな感じです

Thymeleafで遊ぶ

Java用のテンプレートエンジンであるThymeleafで遊んでみた

基本

まず実装から。

次にテンプレート。

Templateを読み込むためのresolverをTemplateEngineに食わせます。テンプレート内の変数などはContextにセットしてengineに与えてやる。基本はこんな感じです。

TemplateResolver

一番キモであるテンプレートファイルを解決するTemplateResolverですが、これの実装は4種類あります。

  • FileTemplateResolver
  • ClassLoaderTemplateResolver
  • UrlTemplateResolver
  • ServletContextTemplateResolver

全てのresolverはITemplateResolverインターフェイスを実装しており、TemplateResolverという親クラスを継承してます。じゃあ何が違うかというと、テンプレートファイルを読み込む手段の違いがあります。

例えばFileTemplateResolverはコンストラクタでFileResourceResolverというリソース取得の為のクラスをセットしますが、この中ではFileクラスを用いて指定されたテンプレートをリソースファイルとして取得しようとします。

対してClassLoaderTemplateResolverはClassLoaderResourceResolver内でクラスローダを利用してリソースファイルを取得します

これの違いが一番わかり易いのは、パスを指定する時に出ます。

└─src
    ├─org
    │  └─misty
    │      └─rc
    │          └─thymeleafsample
    └─template
        └─index.html

こんな感じでテンプレートを置いたとします。

上記サンプルはClassLoaderTemplateResolver(長いな...)を使った例ですが、この場合、ClassLoaderはsrcディレクトリをルートディレクトリとした相対パスで指定できます。

FileTemplateResolverを使う場合はこうなります。

まあ、ちょっと考えれば分かるんですけど、例えば自作ライブラリでJARファイルに固めた時とかどうなるか、とか考えると、どのResolverを使うべきかいろいろ考えますね。

続きは気が向いたら書きます