Dropwizard0.7.0でのassets

Dropwizard続き。

Dropwizardで作るアプリケーションのビューとしては、「Dropwizard Views」にあるように、FreeMarkerとMustacheが使えるみたいなのですが、せっかくJAX-RSベースのRESTfulアプリケーションを開発しているので、ビューとロジックは分けたいなと思いました。ビュー側で、Javaへの依存を抑えて、いわゆるSingle Page Application(SPA)を作るための下地を作ります。

Dropwizard0.7.0の場合、以下のようになります。

  • dropwizard-coreにはdropwizard-assetsへの依存関係が含まれていないので、 build.gradle に追加(dropwizard系のライブラリの構成が整理されたのも0.6→0.7での変更点の一つ)。
compile 'io.dropwizard:dropwizard-assets:0.7.0'
  • src/main/resource 以下に assets ディレクトリ(名前は設定次第なので何でもよい)を作り、 index.html を配置(中身は確認ができる最低限のもの)。
  • Applicationクラスの initialize メソッド内で AssetsBundleaddBundle する。 AssetsBundle には5パターンのコンストラクタがあるのですが、 AssetsBundle で定義されているデフォルトのインデックスファイルのファイル名が index.html ではなく index.htm なので、 index.html にさせるために必要なパラメータを全て渡しています。
public void initialize(Bootstrap<HelloAppConfiguration> bootstrap) {
    bootstrap.addBundle(new AssetsBundle("/assets", "/app", "index.html", "assets"));
}