@Resourceアノテーション使う?

 

あけましておめでとうございます。今年もよろしくお願いします。

struts2+Srping+iBATISで弊社お客様のフレームワークづくりをしています。
正月休み中に発見したTIPSを1つ。

アクションで@Resourceアノテーションを使って、DAOを初期化することができますが、これが使えるのはアクションクラスだけで、それ以外の共通部品でDBを呼びたいときは使えません。
これではアクションの場合と共通部品とでDAOのインスタンスの仕方が変わってしまいます。

そこで、DAOに getInstance() といったstatic なメソッドを実装しアクションもその他のクラスも同じようにDAOを取得できるようにしました。
Spring の ActionContext をstaticに保持するビーンを作成し、Springによってビーン生成時にActionContextをそのstaticなクラス変数に設置することで、DAO の getInstance() もスッキリかけました。
@Resourceアノテーションは結局不要となりました。

・・・言葉だけでは分からないですね。
こういうパズルみたいな作業はいつもとても楽しいのですが、乱立するフレームワークに振り回されているような気もします。