この週末はWicket+Guice+MyBatisを動かしてみました。とりあえず動くところまでいったので、いったんまとめます。

なんでこの組み合わせ?

 設定ファイルがいらないから。業務ではSeasar2を使用していますが、diconファイルがdiconファイルをインクルードするあたりで僕の守備範囲外になりました。管理しきれませんわ。ちなみに設定ファイルが嫌いなのは、タイプミスごときで貴重な時間を奪われるから。そうは言っても、タイプミスから完全に逃れることはできないのですが。SQLとかね。
 Guiceは基本的にインターフェイスに実装クラスを注入するという使い方なので、自然にインターフェイスに依存するようになり、心が安らかになる。

どうやって動かすの?

 まず必要なもの。

 EclipseMavenプラグインを使ってプロジェクトを構築しました。WicketのQuickStartをベースにして、GuiceとMyBatis、それからwicket-guiceとmybatis-guiceを追加する感じで。やればできると思うよ。
 ここからが肝心なのに、検索だけではなかなか情報に辿りつけないところ。
 まず、web.xmlを書き換えてWicketFilterからWicketServletに置き換える。WicketServletの設定方法はhttp://wicket.apache.org/apidocs/1.4/org/apache/wicket/guice/GuiceWebApplicationFactory.htmlを参考に。
 次に、Moduleを作成し、WebApplicationへ自分のWebApplicationを注入する定義をする。このModuleは、WicketServletのinit-paramへ設定する。ここまでくれば、Tomcatを起動してホームページを表示することができるようになる。
 で、やっとこさMyBatisの設定に移る。ここでもModuleを作成するが、MyBatisModuleを継承してください。接続文字列などの設定が簡単になるので。検索すると、

    Guice.createInjector(JdbcHelper.PostgreSQL, new Module(){...});

というサンプルが見つかると思いますが、個人的には

    public class XXXModule extends MyBatisModule {
        @Override
        protected void initialize() [
            super.install(JdbcHelper.PostgreSQL);
            ...
        }
    }

という書き方の方が好き。...のところには、DataSourceProviderとか、TransactionalFactoryとか、JDBCドライバとか、ユーザーとか、パスワードとか、Serviceとか、Mapperとかの設定をする。
 ここまでくれば、DBとのやりとりもできるようになる。お疲れさまでした。