T2 + Doma

id:c9katayamaさんとid:yone098さんが、T2+Spring+DomaのサンプルとT2+Guice+Domaのサンプルをつくってくれました。
http://d.hatena.ne.jp/c9katayama/20091011

ありがとうございます!

コメントに書いたのですが、@Daoのconfig要素に指定するクラスはコンテナで管理しないのがいいかなと今のところ思っています。というのも、config要素に指定するクラスがDIコンテナなどの設定・構成情報へのアダプタ的な位置づけと考えているからです。
ただ、GuiceだとSingletonS2ContainerFactoryみたいなSingletonなコンテナにアクセスする手段がないと聞いたので、Guiceを使う場合のベストプラクティスがまだわかっていないのですが。。折をみて調べてみようと思います。


@Delegateを紹介してもらいましたが、個人的に結構おすすめの機能です。@DelegateはDaoのメソッドの振る舞いを自分で制御したい場合(JDBCを直接扱いたいとか)に使用します。
S2Daoでは、特定のメソッドを実装した抽象ラスを作成することで同じようなことはできていたのですが、問題がありました。それは、DIコンテナに登録するクラス名が変わってしまうということです。たとえば、HogeDaoというインタフェースをコンテナに登録していた場合、それを実装した抽象クラスを使うには、AbstractHogeDaoを登録するように設定を変更しなければいけなかったということです(SeasarのSMART deployではそのあたりちゃんと考慮してくれますが)。@Delegateでは、親子関係に変更が入るわけではないので、そういう面倒がありません。
委譲元と委譲先のメソッドシグニチャはaptでチェックしているので、実質的にはメソッドのオーバーライドのようなものです。