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を使うべきかいろいろ考えますね。
続きは気が向いたら書きます