kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

DIコンテナとしてSpringを使わせたい理由?

理由かどうかわかんなけど。
スーツな人から見た場合の意見では
Springの2.0から?2.5から?は、自動設定機能があるが
自動化をさせたくないみたい。
設定ファイルに書かれてるようにしたい模様。(=設定を書かせたい)

アスペクトする際は、ServiceとかDaoとか命名で実行したりするのに
インスタンス生成するクラスなどは全部application-contextに記述
するんだって。
iBatis使ってる場合も、テーブルのカラム名javaのエンティティを
自動マッピングするなだって。(=こんな感じで、書けってこと)

<resultMap id="xxxList"
	class="hoge.xxxList">
	<result property="insDt" column="INS_DATE" />
        <result property="updDt" column="UPD_DATE" />
        <result property="userName" column="USER_NAME" />
</resultMap>

自動マッピングだとアンダーバーなどが入って
ちょっと見にくいかもしれないけど(以下のjavaソース参照)、こっちのが
作業上楽じゃん。
カラムUSER_NAMEをプロパティuser_nameに自動でマッピングしてくれるん
だからさ。

private String user_name;
public setUser_Name(String user_name){
 this.user_name = user_name;
}

設定、設定、設定といってXMLを記述して時間もかかり、
セットされない場合に原因を探す方が手間になると思うん
だけどな。

で、DIコンテナとしてSeasar使う場合なんだけど

スーツな人から見たら
アノテーションは、極力使うな!
だってさ。
strutsのvalidateは、validation.xmlに書けだって。
strutsのActionのアノテーションは禁止。
struts-config.xmlに書けだって。
もちろん、自動でインジェクションしてくれる
autoBindingなんかも禁止。だから
xxxDao
といったかんじで面倒だけど書いてるよ。
設定ファイルになんでも書くことがよくって、ソースに書くのはダメだって。

何が違うんだよ?と言いたいところですな。
それと、XMLばかり書くとXML地獄じゃないかー。
開発中に、ソースファイル(javajsp)とXMLファイル(struts-configなど、dicon)をいったりきたりしないと
ならないじゃないかー。

どうやらアノテーションという新機能*1を嫌っているみたい。
設定を見るならば、ソースファイル見るのと、XMLファイル見るのとでは変わらないんじゃないの?
ただ、自分が(スーツの人が)見たことあるファイルにしたいだけと思う。

そんなわけで(どんなわけで?)
最近、生産性と効率がいっこうに上がらない状態に陥っている。

そして、他にもいろいろと問題が・・・

現在たずさわってる案件では、
Seasar2.3+s2struts+s2daoを利用してますが
DXOを使用しないんだそうな。
そのくせ Action層、Service層、Logic層、Dao層 がある。
POJOのActionForm → エンティティ
エンティティ→ ActionFormPOJOの とするようです。
POJOだから良いのか?
良いのか、悪いのか・・・
確かに変換は手間(面倒)がかかるけど、
日付とかは変換したいし
DBのエンティティは数値型(IntegerやDoubleなど)だけど画面表示
ではStringの場合もあるし

個人的には、Seasar2.4のBeanUtilを使いたいんだけどな。
でもコンテナは2.3使ってるから取り入れるとダメって言われる。
素直に?commons BeanUtilsで我慢しときますか。
S2BeanUtil
BeanUtilパッケージのjavaDoc API説明

最後には、じゃ Springじゃね?

と思うみたいですが、スーツな人同士の政治的な争いもあり
DIコンテナとしてSpringかSeasarかは政治的強さにより決定されたりする。

*1:今となっては新じゃなく、使って当たり前、便利