Saturday, July 27, 2013

mixer2とSpringMVC用のViewResolver

mixer2-cachableとともにmixer2-1.2.10もリリースしました。

mixer2-cachableやその他のキャッシュ実装との連携をしやすくするための手直しが入っているほか、 もう一つ重要な機能が追加されています。 SpringMVC用のViewの基底クラスと、ViewResolverです。

これまで、SpringMVCでmixer2を使う場合にはControllerクラスの各メソッドでHtmlを組み立ててMixer2XhtmlViewに仕込んで直接返す、つまりメソッドの戻り値の型がMixer2XhtmlView、という方法を推奨していました。去年書いた下記の記事なんか、もろにそれです。

ところが、この方式、コントローラ自体がビューのテクノロジに依存することになってしまうため、ビューの差し替えが難しくなる=MVCの分離が容易というSpringMVCの良さを殺してしまう=ということになります。

SpringMVCのコントローラのメソッドの戻り値は、

  • Viewの名前≒ViewResolverが解釈しうるString値
  • ModelAndviewまたはそれを拡張したクラスのインスタンス(org.springframework.web.servlet.ModelAndView)
  • 独自のView実装(つまりorg.springframework.web.servlet.Viewをimplementsしたもの)のインスタンス
のどれでもかまわないという柔軟性の高さは素晴らしいです。しかしそれに甘えすぎるのもよくないわけです。

そこで登場するのがViewResolverインターフェイス(org.springframework.web.servlet.ViewResolver)です。 これをきちんと実装すると、コントローラはViewではなくViewの名前をStringで返すだけでよくなります。あとはViewResolverにおまかせです。

今回、こういったことをきちんと解決するために、 Mixer2XhtmlViewResolverAbstractMixer2XhtmlView をそれぞれ追加しました。使い方はそれぞれのjavadocの冒頭にあるとおりです。

また、SpringMVC用のアーキタイプで自動生成されるHelloWorldプロジェクトや、 フルーツショップサンプルアプリケーションも、すでにMixer2XhtmlViewResolverを使った形にリファクタリングされています。合わせて参考にしてください。

No comments:

Post a Comment